package org.example;
import java.util.List;
import java.util.Optional;
interface Command { String name();}
class DeleteCommand implements Command {
@Override
public String name() {return "Delete command";}
}
interface CommandHandler {
boolean supportsCommand(Class klazz);
String commandName(C command);
}
class DeleteCommandHandlerImpl implements CommandHandler {
@Override
public boolean supportsCommand(Class klazz) {return DeleteCommand.class.isAssignableFrom(klazz);}
@Override
public String commandName(DeleteCommand command) {return command.name();}
}
public class Main {
public static void main(String[] args) {
Command toBeHandled = new DeleteCommand();
List knownCommands = List.of(new DeleteCommandHandlerImpl());
Optional result = knownCommands
.stream()
.filter(commandHandler -> commandHandler.supportsCommand(toBeHandled.getClass()))
.findFirst()
.map(commandHandler -> commandHandler.commandName(toBeHandled));
System.out.println(result);
}
}
У меня проблема со строкой ListknownCommands = List.of(new DeleteCommandHandlerImpl()); Это вызывает предупреждение компиляции, так как в CommandHandler отсутствует параметризованный класс.
Согласно PECS, я использую этот список, поэтому он должен быть List
class DeleteCommandHandlerImpl implements CommandHandler { @Override public boolean supportsCommand(Class klazz) {return DeleteCommand.class.isAssignableFrom(klazz);} @Override public String commandName(DeleteCommand command) {return command.name();} }
public class Main { public static void main(String[] args) { Command toBeHandled = new DeleteCommand(); List knownCommands = List.of(new DeleteCommandHandlerImpl()); Optional result = knownCommands .stream() .filter(commandHandler -> commandHandler.supportsCommand(toBeHandled.getClass())) .findFirst() .map(commandHandler -> commandHandler.commandName(toBeHandled)); System.out.println(result); } } [/code] У меня проблема со строкой ListknownCommands = List.of(new DeleteCommandHandlerImpl()); Это вызывает предупреждение компиляции, так как в CommandHandler отсутствует параметризованный класс. Согласно PECS, я использую этот список, поэтому он должен быть List