Я использую шаблон команды для инкапсуляции логики в «командные» объекты. Я в настоящее время есть два типа командных интерфейсов:Объединение различных типов командных интерфейсов с использованием generics/inheritance
public interface ObjectCommand
{
public void execute(Object object);
}
И один, что делает выполнить обратный метод что-то:
public interface ObjectToArrayCommand
{
public Object[] execute(Object object);
}
мне было интересно, если я мог бы объединить эти два различных интерфейса в одном интерфейсе, или как один и тот же интерфейс суперкласса с использованием дженерик и/или наследования, например, что-то вроде:
public interface Command<T,U>
{
public U execute(T t);
}
у меня есть проблема с этой схемой является то, что я Cann o сделать параметр «U» «void/no object». Есть ли другой способ?
Я знаю, что могу использовать подклассы для предоставления параметров, которые являются БОЛЕЕ конкретными, например, «Объект» может стать «String» в подклассе, и он все равно будет компилироваться. Но опять же, «Объект» не может стать «недействительным».
Причина, по которой я хочу объединить эти два интерфейса в один интерфейс, потому что это проще (концептуально говоря), если команда EVERY реализует один и тот же интерфейс вместо двух (или более) типов команд, которые используются вместе.