class の実装がいくつかBase
あり、すべてのオブジェクトはList<Base>
.
詳細なチェックを使用せずaction
に、これらのオブジェクトに基づいて特定のものを呼び出すにはどうすればよいですか? これらのオブジェクトのインスタンスに基づいて実行するサービスメソッドを選択するにはどうすればよいでしょうか。ただし、アクションが実行されるオブジェクトを気にする必要はありません。適切なサービス メソッドは、型ケースや instanceof チェックなしで何らかの形で自動的に選択される必要があります。instanceof
instanceof
class Base;
class Foo extends Base;
class Bar extends Base;
class Service {
List<Base> bases;
public void someMethod() {
for (Base base : bases) {
//perform some instanceof dependend action.
//these actions cannot be inside of any Base class as it makes use of other objects too.
if (base instanceof Foo) {
fooService.action((Foo) base);
}
if (base instanceof Bar) {
barService.action((Bar) base);
}
}
}
}
//custom service methods
class FooService {
void action(Foo foo) {
}
}
class BarService {
void action(Bar bar) {
}
}