我有一個對象,我想在我調用適當的實例方法時進行修改。 (我認爲這是正確的詞彙)如果創建內部類,如何讓實例方法修改對象?
從一個班,我這樣做:
Pizza pizza = new Pizza();
pizza.addTopping(Cheese);
pizza.addTopping(Pepperoni);
pizza.setCrustType("thick");
pizza.make();
pizza.putInOven();
這就是事情變得有趣。所以這裏的make()
方法在Pizza
中被稱爲上面的方法。
public void make()
{
final Pizza pizza = this;
pizza.registerUpdateHandler(new IUpdateHandler()
{
@Override
public void onUpdate(float cookTime)
{
// need to do some modifications to pizza
pizza.doSomething();
pizza.doSomethingElse();
}
});
}
爲了能夠訪問內部類內的比薩餅對象,IUpdateHandler(),我要一個Pizza
對象設置爲this
。但是,它也必須是final
因爲你:
Cannot refer to a non-final variable inside an inner class defined in a different method
。
要回到我原來的代碼片段,我仍然需要調用pizza.putInOven()
,並將它是引用相同的Pizza
對象爲所有其他呼叫,但從make()
方法效果修改。因爲我必須在方法make()
中創建一個新的Pizza
對象final
,即不再是相同的對象時,我想調用putInOven()
。
我該如何解決這個問題?如果我的問題不清楚,我會盡我所能編輯和重申,只留下評論。
哇!我覺得很愚蠢!我試過這個,但是我放了'this.doSomething()',如果它抱怨'doSomething()'方法不是'IUpdateHandler'類型的話。一旦我省略它,一切都好!謝謝!!!! –