gpt4 book ai didi

java - 如果实例方法创建内部类,如何修改对象?

转载 作者:行者123 更新时间:2023-12-01 18:58:52 25 4
gpt4 key购买 nike

我有一个对象,当我为其调用适当的实例方法时,我想对其进行修改。 (我认为这是正确的词汇)

在一节课上,我正在这样做:

 Pizza pizza = new Pizza();
pizza.addTopping(Cheese);
pizza.addTopping(Pepperoni);
pizza.setCrustType("thick");
pizza.make();
pizza.putInOven();

这就是事情变得有趣的地方。因此,这是上面调用的 Pizza 类中的 make() 方法。

 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 对象,我必须将 Pizza 对象设置为 this。但是,它也必须是最终,因为您:

无法引用在不同方法中定义的内部类内的非最终变量

回到我的原始代码 fragment ,我仍然需要调用 pizza.putInOven() 并让它引用与所有其他调用相同的 Pizza 对象,但修改了 make() 方法生效。因为我必须在方法 make() 中创建一个 final 类型的新 Pizza 对象,该对象不再相同 当我想调用 putInOven() 时修改对象。

如何解决这个问题?如果我的问题不清楚,我会尽力编辑和重述,只需发表评论即可。

最佳答案

Because I had to create a new Pizza object of type final in the method make() that is no longer the same object modified when I want to call putInOven().

这不是真的。

final Pizza pizza = this; 

此行不会创建新对象,因为您没有使用 new 运算符。因此,它与 this 引用的对象相同,因此您的 putInOven 将看到由 make 方法完成的更改。

关于java - 如果实例方法创建内部类,如何修改对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13025367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com