我有一个通用的界面
public interface Consumer<E> {
public void consume(E e);
}
Run Code Online (Sandbox Code Playgroud)
我有一个类消耗两种类型的对象,所以我想做类似的事情:
public class TwoTypesConsumer implements Consumer<Tomato>, Consumer<Apple>
{
public void consume(Tomato t) { ..... }
public void consume(Apple a) { ...... }
}
Run Code Online (Sandbox Code Playgroud)
显然我做不到.
我当然可以自己实施调度,例如
public class TwoTypesConsumer implements Consumer<Object> {
public void consume(Object o) {
if (o instanceof Tomato) { ..... }
else if (o instanceof Apple) { ..... }
else { throw new IllegalArgumentException(...) }
}
}
Run Code Online (Sandbox Code Playgroud)
但我正在寻找泛型提供的编译时类型检查和调度解决方案.
我能想到的最好的解决方案是定义单独的接口,例如
public interface AppleConsumer {
public void consume(Apple a);
} …Run Code Online (Sandbox Code Playgroud)