Как задать параметр для метода?

Рейтинг: 0Ответов: 1Опубликовано: 16.05.2023

Хочу чтобы в метод моего интерфейса можно было передать класс, который реализует интерфейс Serializable.

К примеру:

 interface myInterface {
    
        <T implemets Serializable> void myEvent(T object) {}
    
 } // это, конечно, не работает


 public class A implements Serializable {...}
 public class B implements Serializable {...}

Я хочу обозначить, что для метода myMethod в качестве параметра подойдёт любой класс реализующий Serializable. Как это сделать?

Ответы

▲ 2

Обозначить тип параметра в методе можно несколькими способами:

  1. Использовать Serializable непосредственно в сигнатуре метода как указал в комментарии @Stanislav Volodarskiy:
public SimpleInterface {
    void myMethod(Serializable ser);
}

Это наиболее простой и логичный способ.

  1. Использовать эквивалентный обобщённый метод (почти как указано в коде вопроса):
public GenMethodInterface {
    <T extends Serializable> void myMethod(T t);
}
  1. Использовать обобщённый интерфейс (если нужна дополнительная проверка типов):
public GenInterface<T extends Serializable> {
    void myMethod(T t);
}

В данном случае нужно будет создать типизированный экземпляр интерфейса:

GenInterface<Serializable> gi = new GenInterface<>() { // Java 9+
    @Override public void myMethod(Serializable s) {
        // ... реализация
    }
};