gpt4 book ai didi

java - 从匿名 Java 类改变原始变量的合理方法是什么?

转载 作者:搜寻专家 更新时间:2023-11-01 01:38:51 24 4
gpt4 key购买 nike

我想写下面的代码:

boolean found = false;
search(new SearchCallback() {
@Override void onFound(Object o) { found = true; }
});

显然这是不允许的,因为found需要是 final .我做不到 found出于线程安全原因的成员字段。最好的选择是什么?一种解决方法是定义

final class MutableReference<T> {
private T value;
MutableReference(T value) { this.value = value; }
T get() { return value; }
void set(T value) { this.value = value; }
}

但如果格式正确,这最终会占用大量空间,如果可能的话,我宁愿不重新发明轮子。我可以使用 List<Boolean>使用单个元素(改变该元素,或者清空列表)甚至 Boolean[1] .但一切似乎都闻起来很有趣,因为没有一个选项按预期使用。

这样做的合理方法是什么?

最佳答案

我倾向于使用您提到的 boolean[1] 方法:

final boolean[] found = {false};
search(new SearchCallback() {
@Override void onFound(Object o) { found[0] = true; }
});

有点hackish,但它往往是最接近你真正想要的东西

关于java - 从匿名 Java 类改变原始变量的合理方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2762489/

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