0
对于匿名内部类,Java如何处理在匿名内部类块之外声明的字段。匿名内部类和代码块外的字段
在案例policyOwnerModelObject中,如何在生成的匿名内部类中定义该字段?
// Local variable
final Bean policyOwnerModelObject = XXXXX <--- here, how is the class built with access to this object. Is it a final field in the class?
final WebMarkupContainer container = new WebMarkupContainer("container") {
@Override
public boolean isVisible() {
if ((policyOwnerModelObject.getPolicyOwner() != null) && (policyOwnerModelObject.getPolicyOwner().getValue() != null)) {
return !PolicyOwnerService.TRUST.equals(policyOwnerModelObject.getPolicyOwner().getValue());
} else {
return false;
}
}
};
====
OK,反编译的类,这是我得到了什么:
class MyDataPanel$1 extends WebMarkupContainer
{
public boolean isVisible()
{
if(val$policyOwnerModelObject.getMy() != null && val$policyOwnerModelObject.getMy().getValue() != null)
return !"4".equals(val$policyOwnerModelObject.getMy().getValue());
else
return false;
}
final MyDataPanel this$0;
private final MyBean val$policyOwnerModelObject;
MyDataPanel$1(MyBean policyownerbean)
{
this$0 = final_policytrustpanel;
val$policyOwnerModelObject = policyownerbean;
super(String.this);
}
}
我不明白这一行:'this $ 0 = final_policytrustpanel;''final_policytrustpanel'从哪里来? – jjnguy 2010-12-13 17:03:33
将外部'this'看作封闭方法的'final'局部(即使内部类不是匿名的)。 – 2010-12-13 17:05:31
我反编ABC $ 1.class文件。反编译器没有拿起final_policy信任。我不知道那是什么。但是,我得到了我的答案。 – 2010-12-13 17:18:36