我试图在我们正在使用的第三方框架中稍微扩展一个未记录的类.我用jd-gui反编译了.class文件,看到一个像这样定义的内部类:
private class DeactivateAction extends AbstractAction {
public DeactivateAction() {
super("Deactivate");
}
public void actionPerformed(ActionEvent paramActionEvent) {
if (MyContainingType.this.someBoolean) {
MyContainingType.access$102(MyContainingType.this, false);
MyContainingType.this.add(MyContainingType.this.interceptor);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道如何解释"访问$ 102"这一行.MyContainingType扩展了javax.swing.JLayeredPane.这不能为我编译,所以如何解释这个并在我的扩展类中正确转换它?
这是一个合成访问器.
甚至内部类也无法真正访问其封闭类的私有成员.编译器"合成"默认(包)访问方法,以允许内部类使用封闭类的私有字段.
您应该能够查看封闭的类来弄清楚access$102正在做什么.
javap使用-c选项的工具也非常有用.
| 归档时间: |
|
| 查看次数: |
2307 次 |
| 最近记录: |