Если тип T
не имеет значения в вашем слушателе, вы должны, по крайней мере, определить метод как void beforeAction(final MyEvent<?> event);
, чтобы избавиться от предупреждения и сохранить общие возможности. Без какого-либо типа компилятор отключит все проверки типов для этого метода.
Если вы хотите иметь разных слушателей для различных типов событий, вы должны добавить T
в свой интерфейс, как, как уже указывал Андрей.
Таким образом, вы можете создать несколько реализаций прослушивателя без необходимости ручной настройки (и, следовательно, ошибок), например. что-то вроде этого:
public class StringListener implements MyListener<String> {
void beforeAction(final MyEvent<String> event) {
...
}
}
public class NumberListener implements MyListener<Number> {
void beforeAction(final MyEvent<Number> event) {
...
}
}
Если у вас есть реализации, как это, вы можете также запросить значение T
во время выполнения, так как информация о типе хранится в данном отражении.
Обратите внимание, что это не относится к анонимным классам или локальным переменным - в этих случаях происходит стирание типа.
Или если 'T' не имеет значения в этом случае, вы можете сделать' void beforeAction (final MyEvent > event); ' – Thomas
Не могли бы вы объяснить, почему тоже? – LuckyLuke
Я не думаю, что есть какая-то причина, по которой он избавляется от предупреждений компилятора, и несколько позволяет вам принудительно вводить ограничения типа во время компиляции. Информация о типе сохраняется во время выполнения. Как вы увидите из [таких вопросов, как этот] (http://stackoverflow.com/q/15629552/586086), система дженериков Java полностью распалась. –