类如何在Java中检查内部类的所有权
我的结构如下:
public class Outer {
public /*non-static*/ final class Inner {
// to prevent instantiating other than in method `create`
private Inner(/* ... */) { /* ... */ }
/* ... */
}
Inner create(/* ... */) {
return new Inner(/* ... */);
}
void operateOn(Inner inner) {
// TODO check if inner for this Outer instance
}
}
用法如下:
Outer manager = new Outer();
Inner state = manager.create(/* ... */);
还有别的地方
manager.operateOn(state);
我想创建一个防傻瓜的实用程序类,这意味着Outer.operateOn
只接受自身拥有的Inner
实例
我知道所有非静态的内部类都通过它们的类体内的Outer.this
引用(所有)外部类
我想知道是否有比向Inner
添加任何方法更好的方法来检查这个问题,比如isOwnedBy(Outer outer) { return outer == Outer.this; }
或getOwner() { return Outer.this }
# 1 楼答案
这总是比你想象的要难
如果你知道它必须交给与州有关的经理,我不会提供经理
试试吧
state
知道它应该使用哪个manager
。这样就无法指定错误的管理器,因为您无法更改管理器# 2 楼答案
正如彼得所说
管理器中的
operate
方法应该是私有的