日期:2014-05-20  浏览次数:20763 次

反编译后内部类的问题
代码:
class Outer {
private int xx = 123;
public Inner getInner() {
return new Inner();
}
public class Inner {
public int getDate() {
return xx;
}
}
}



反编译Outer类,
C:\>javap -private Outer
Compiled from "Test.java"
class Outer extends java.lang.Object{
  private int xx;
  Outer();
  public Outer$Inner getInner();
  static int access$000(Outer);
}

编译器自动生成了一个方法,access$000(),包访问权限,于是我在另外个类中访问 access$000() 方法,结果说
找不到这个方法,这又是为什么呢,编译器做的限制?一定就访问不了吗?

另外用 Outer$Inner 访问内部类也不可以的,也是类似的限制吗?


------解决方案--------------------
引用楼主 michael9527 的帖子:
代码:
class Outer {
private int xx = 123;
public Inner getInner() {
return new Inner();
}
public class Inner {
public int getDate() {
return xx;
}
}
}


反编译Outer类,
C:\>javap -private Outer
Compiled from "Test.java"
class Outer extends java.lang.Object{
private int xx;
Outer();
public Outer$Inner getInner();
static int access$000(Outer…