我有两个类Outer
和Inner
,以及Outer
中的一个方法Inner
。它需要验证此Inner
是否属于其中一个,而不是属于另一个实例的Inner
。我想要做的主要是innerInstance.outer.this
,但似乎没有关键字。我唯一的另一个想法是在getOuterThis()
上采用Inner
方法,但我宁愿不必诉诸于此。
以下是我要完成的一般框架:
public class Outer {
public Inner getInner() { ... }
public void useInner(Inner inner) {
// Validate here
}
public class Inner {
// Can I avoid this?
public Outer getOuterThis() {
return Outer.this;
}
}
}
答案 0 :(得分:1)
我不认为获得Outer.this
引用是一种好方法,除非明确地公开它,就像你正在做的那样。但是,您可以通过让内部类进行验证来完全避免这种情况:
public class Outer {
public Inner getInner() { ... }
public void useInner(Inner inner) {
// Validate
inner.validateOuterInstance(this);
}
public class Inner {
public void validateOuterInstance(Outer outer) {
if (Outer.this != outer) {
throw new InvalidArgumentException("Wrong outer instance");
}
}
}
}