Как использовать метод интерфейса, только если класс реализует его?

У меня есть что-то вроде этого:

public interface MyInt {
  public void doStuff();
}

public extends SomeClass {
  // Some methodes
}

И тогда я бы хотел расширить свой класс SomeClass. Теперь некоторые из этих подклассов могут реализовывать MyInt, и поэтому я хотел бы сделать что-то вроде:

List<SomeClass> list = new ArrayList<>();
// Then we put stuff in list
for (SomeClass s : list)
  if (s instanceof MyInt)
    s.doStuff();

Но это не работает. Как вы можете использовать метод, предоставляемый интерфейсом, только если последний реализован текущим классом?

Хорошего дня.

1 ответ

Решение

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

for (SomeClass s : list)
  if (s instanceof MyInt)
    ((MyInt) s).doStuff();
Другие вопросы по тегам