如何获得内部类';s外部类';这是用Java写的吗?
我有两个类,如何获得内部类';s外部类';这是用Java写的吗?,java,inner-classes,Java,Inner Classes,我有两个类,外部和内部,以及外部中的一个方法,该方法采用内部。它需要验证此内部是它自己的,而不是属于另一个实例的内部。我想做的基本上是innerInstance.outer.this,但似乎没有关键字。我唯一的另一个想法是在内部上使用getOuterThis()方法,但我不想求助于此 以下是我试图完成的总体框架: public class Outer { public Inner getInner() { ... } public void useInner(Inner in
外部
和内部
,以及外部
中的一个方法,该方法采用内部
。它需要验证此内部
是它自己的,而不是属于另一个实例的内部
。我想做的基本上是innerInstance.outer.this
,但似乎没有关键字。我唯一的另一个想法是在内部
上使用getOuterThis()
方法,但我不想求助于此
以下是我试图完成的总体框架:
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;
}
}
}
我不认为有什么好的方法可以获取
外部引用。除非像你现在这样显式地公开它。但是,您可以通过让内部类进行验证来完全避免这种情况:
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");
}
}
}
}
您需要一个实例来调用validate方法。仅供参考…@拉萨德-是的,你说得对。看起来David Ehrmann为我修复了它。@EJP Eclipse编译器不喜欢它。这是一个与您链接的副本不同的问题。这就是如何在不向内部类添加方法的情况下从外部类执行此操作。很明显,答案就在外面。