Как задать параметр для метода?
Хочу чтобы в метод моего интерфейса можно было передать класс, который реализует интерфейс Serializable.
К примеру:
interface myInterface {
<T implemets Serializable> void myEvent(T object) {}
} // это, конечно, не работает
public class A implements Serializable {...}
public class B implements Serializable {...}
Я хочу обозначить, что для метода myMethod в качестве параметра подойдёт любой класс реализующий Serializable. Как это сделать?
Ответы (1 шт):
Автор решения: Nowhere Man
→ Ссылка
Обозначить тип параметра в методе можно несколькими способами:
- Использовать
Serializableнепосредственно в сигнатуре метода как указал в комментарии @Stanislav Volodarskiy:
public SimpleInterface {
void myMethod(Serializable ser);
}
Это наиболее простой и логичный способ.
- Использовать эквивалентный обобщённый метод (почти как указано в коде вопроса):
public GenMethodInterface {
<T extends Serializable> void myMethod(T t);
}
- Использовать обобщённый интерфейс (если нужна дополнительная проверка типов):
public GenInterface<T extends Serializable> {
void myMethod(T t);
}
В данном случае нужно будет создать типизированный экземпляр интерфейса:
GenInterface<Serializable> gi = new GenInterface<>() { // Java 9+
@Override public void myMethod(Serializable s) {
// ... реализация
}
};