gpt4 book ai didi

java - 使用finally从setter返回旧值,不带临时变量

转载 作者:行者123 更新时间:2023-12-02 07:54:31 26 4
gpt4 key购买 nike

我正在实现V setValue(V value) Map.Entry<K,V>中的方法并做了以下工作:

@Override public T setValue(T value) {
try {
return this.value;
} finally {
this.value = value;
}
}

它按其应有的方式工作。

我知道有一些关于 finally 的问题 block 之类的东西,但我找不到这个具体问题。您对这个特定用例有什么想法?这合法吗?应该避免?如果是,那么为什么或为什么不。谢谢!

最佳答案

喜欢简单、明显的代码。即

@Override public T setValue(T value) {
T old = this.value;
this.value = value;
return old;
}

此外,这可以扩展为[本地]线程安全(如 NIO attach)。

private final AtomicReference<T> valueRef;

@Override public T setValue(T value) {
return valueRef.getAndSet(value);
}

关于java - 使用finally从setter返回旧值,不带临时变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6044769/

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