У меня есть некоторый массив с различными объектами одного и того же типа интерфейса, например:
Interface interface {}
class A implements interface {}
class B implements interface {}
У меня также есть перегруженный метод, который реализует все эти унаследованные объекты интерфейса:
public void doSomething(A obj) {}
public void doSomething(B obj) {}
Компилятор также заставляет меня написать перегруженный метод с интерфейсом:
public void doSomething(interface obj) {}
Затем я просматриваю значения списка и вызываю метод:
for (interface obj: myList) {
doSomething(obj);
}
Теперь, поскольку тип obj - «интерфейс», вызывается doSomething (интерфейс obj) вместо, скажем, doSomething (B obj) в случае, если объект obj действительно имеет тип B.
Могу ли я заставить java делать иначе, поэтому он вызывает doSomething (A obj), когда obj имеет тип A, и doSomething (B obj), когда obj имеет тип B?