在方法中局部分配对象成员变量有好处吗?
Is there a benefit of assigning an object member variable locally in a method?
在 Netty 中,我经常看到在 class 方法中本地分配的对象成员变量。这是风格问题还是有程序化的好处?
我在下面包含了一个代码片段:
public ChannelFuture bind() {
validate();
SocketAddress localAddress = this.localAddress;
if (localAddress == null) {
throw new IllegalStateException("localAddress not set");
}
return doBind(localAddress);
}
我通常在关注多线程时看到这种模式。例如,如果另一个线程可能会在 null 检查之后更改成员值或将其设为 null,但在此时发生成员访问仍然是一个有效的用例。或者代码试图避免 locks/synchronization。因此,该成员被复制到本地,所有进一步的操作都使用本地副本完成,以防止空访问。
在 Netty 中,我经常看到在 class 方法中本地分配的对象成员变量。这是风格问题还是有程序化的好处?
我在下面包含了一个代码片段:
public ChannelFuture bind() {
validate();
SocketAddress localAddress = this.localAddress;
if (localAddress == null) {
throw new IllegalStateException("localAddress not set");
}
return doBind(localAddress);
}
我通常在关注多线程时看到这种模式。例如,如果另一个线程可能会在 null 检查之后更改成员值或将其设为 null,但在此时发生成员访问仍然是一个有效的用例。或者代码试图避免 locks/synchronization。因此,该成员被复制到本地,所有进一步的操作都使用本地副本完成,以防止空访问。