Как использовать метод интерфейса, только если класс реализует его?
У меня есть что-то вроде этого:
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();