3
abstract class Base {
...
  public class Inner {
    private final String ownerClassName;
    public Inner() {
    ...
    }
  }
  public static class Super1 extends Base{
  ...
  }
  public static class Super2 extends Base{
  ...
  }
}

我想Inner.Inner()设置ownerClassName为封闭类实例的类型,例如“Super1”或“Super2”。如何才能做到这一点?

4

2 回答 2

9
Base.this.getClass().getName()
于 2012-12-28T17:31:12.863 回答
2

首先从 ownerClassName 中删除 final,将其设为私有,并在需要时仅提供 get 方法。

然后按照代码:

Inner() {
   ownerClassName = Base.this.getClass().getSimpleName();
}
于 2012-12-28T18:03:56.367 回答