Я хотел бы создать интерфейс, который имеет следующие методы:Использование Java дженериков в интерфейсах
public interface MyInterface {
public Class<X> getClass();
public void handle(X message);
}
Где X должен быть того же типа в обоих методах. Причина, по которой мне нужно сделать это, - это получение сообщений, которые являются блобами, которые необходимо добавить в соответствующий класс (с использованием getClass), а затем я хотел бы заставить разработчиков реализовать метод дескриптора, который принимает соответствующий класс (вместо этого предполагая, что есть один и использовать отражение, чтобы называть его).
Похоже, что единственный способ сделать это, чтобы добавить тип параметров к интерфейсу, как так:
public interface MyInterface<T> {
...
}
, но это меньше, чем идеал из-за зависимости каскада, что потребует определений этого типа в различном другие классы. Какие-либо предложения? Благодаря!
+1 интересный как * общий * вопрос, хотя метод getClass на вашем интерфейсе запахи *** утечки реализации ***. – Perception
'MyInterface.java:2: getClass() в MyInterface не может переопределить getClass() в java.lang.Object; переопределенный метод является окончательным public Class getClass(); ' ^ –
Я не вижу, как ваш подход может быть полезен. Дженерики - это просто артефакт компилятора, поэтому нет смысла вызывать 'getClass' для поиска типа среды выполнения и затем нажимать этот тип на параметр статического типа. –