对真正的 Java 泛型专家有一点困惑... ;)
假设我有以下两个接口:
interface Processor {
void process(Foo foo);
}
interface Foo {
Processor getProcessor();
}
例如,以下两个实现类:
static class SomeProcessor implements Processor {
static final SomeProcessor INSTANCE = new SomeProcessor();
@Override
public void process(Foo foo) {
if (foo instanceof SomeFoo) { // <-- GET RID OF THIS ?
// process ((SomeFoo) foo)
}
}
}
class SomeFoo implements Foo {
@Override
public Processor getProcessor() {
return SomeProcessor.INSTANCE;
}
}
有什么方法可以使这两个接口通用,这样我就不需要函数instanceof
中的标记检查,process()
并且在我的代码的其他地方仍然有以下构造工作?
foo.getProcessor().process(foo);
(当然,我不知道我正在处理的 Foo 的哪个子类)
换句话说:我正在寻找一种在对象中定义函数的方法,以便它只能返回另一个处理包含该函数的对象类型的对象。注意:我不只是在谈论处理包含函数的对象的一些最小公分母超类(上图:Foo),而是该对象的实际类(上图:SomeFoo)。
(这远没有听起来那么微不足道,除非我现在真的很愚蠢......)