当我为它调用适当的实例方法时,我有一个想要修改的对象。(我认为这是正确的词汇)
在一堂课上,我正在这样做:
Pizza pizza = new Pizza();
pizza.addTopping(Cheese);
pizza.addTopping(Pepperoni);
pizza.setCrustType("thick");
pizza.make();
pizza.putInOven();
这就是事情变得有趣的地方。所以make()
这是上面调用的方法,它在 class 中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()
方法进行了有效的修改。因为我必须在方法中创建一个新Pizza
的类型对象,该对象不再是我想调用时修改的同一个对象。final
make()
putInOven()
我该如何解决这个问题?如果我的问题不清楚,我会尽力编辑和重申,只需发表评论。