匿名の内部クラスでは、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
内側のクラスが匿名でない場合でも、外側の 'this'を囲むメソッドの' final'ローカルとみなしてください。 –
私はABC $ 1.classファイルを逆コンパイルしました。デコンパイラはfinal_policyの信頼を取得しませんでした。私はそれが何であるか分からない。しかし、私は私の答えを得た。 –