考虑以下定义和实现Foo接口的类:
public class MyClass {
public Foo getFoo() {
return new FooImpl();
}
public void fooMethod(Foo foo) {
final fooImpl = (FooImpl) foo;
fooImpl.hiddenMethod();
}
public interface Foo {
void doSomething();
}
private class FooImpl implements Foo {
public void doSomething();
void hiddenMethod() {
}
}
}
外部类将调用MyClass.getFoo()以获取一个Foo对象,并可能将其传递回fooMethod(). fooMethod()期望FooImpl实现Foo并强制转换Foo为,FooImpl因此它可以调用包私有方法hiddenMethod()。
我的问题是,我并不热衷于投射Foo到FooImpl. 我可以用另一种模式来做同样的事情吗?
提前致谢...