考虑以下定义和实现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
. 我可以用另一种模式来做同样的事情吗?
提前致谢...