gpt4 book ai didi

Java 版本 "Pointer Pointer"

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:13:55 26 4
gpt4 key购买 nike

我遇到过几次这样的情况,来自架构不同部分的多个类希望查看相同的数据结构,该数据结构可能会被完全替换(例如,当更新版本出现时来自网络。)如果我保留数据结构并更新足够简单的信息(所有内容都可以引用相同的信息,并且在查看时会获得最新信息),但如果引用完全重新分配,这不会在其他地方反射(reflect)出来。

我有一个想法来制作一个 super 通用的包装器,例如:

public class Wrapper<T>{
public T _value;
}

您永远不会重新分配包装器,而只是重新分配其中的值。然后所有不同的组件都可以指向包装器,并且当"new"版本出现时可以干净地重新分配内部值。 (我想我已经看到用 C 中的 ** 完成了这件事。)

但是,我怀疑我以前从未见过这个。有没有更好的方法来解决这个问题?

最佳答案

使用AtomicReference .

String initialReference = "initial value referenced";

AtomicReference<String> atomicStringReference =
new AtomicReference<String>(initialReference);

String newReference = "new value referenced";
//directly update
atomicReference.set(newReference);

//compare and set
boolean exchanged = atomicStringReference.compareAndSet(initialReference, newReference);
System.out.println("exchanged: " + exchanged);

exchanged = atomicStringReference.compareAndSet(initialReference, newReference);
System.out.println("exchanged: " + exchanged);

//get value
String reference = atomicReference.get();

来自 here 的代码示例

关于Java 版本 "Pointer Pointer",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39379205/

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