gpt4 book ai didi

java - 当对象被销毁时,使用 Wea​​kReference 的一般方法是什么?

转载 作者:行者123 更新时间:2023-12-02 03:29:54 24 4
gpt4 key购买 nike

请帮我检查一下下面的代码,如果Car对象被GC破坏了,我想恢复程序逻辑,按照通常的做法,我的代码是否正确?

Car car = new Car();
WeakReference<Car> mWeakReference = new WeakReference<Car>(car);
mWeakReference.get().run();
...
if (mWeakReference.get() == null) {
Car newCar = new Car();
mWeakReference= new WeakReference<Car>(newCar);
}
mWeakReference.get().run();

最佳答案

你在问什么并不是很清楚(正如specializt所说)。但代码中有一个错误。请参阅下面的评论。

if (mWeakReference.get() == null) {
Car newCar = new Car();
mWeakReference= new WeakReference<Car>(newCar); //instance set on weakref
} // maybe GC runs here
mWeakReference.get().run(); //instance could be null

更正确的方法是(虽然不太干净)

Car car = mWeakReference.get();
if (car == null) {
car = new Car();
mWeakReference= new WeakReference<Car>(car);
}
car.run();

关于java - 当对象被销毁时,使用 Wea​​kReference 的一般方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38245432/

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