Java 在方法中局部指定对象成员变量是否有好处?
在Netty中,我经常看到在类方法中本地分配对象成员变量。这是一个风格的问题还是有一个程序性的好处 我在下面包含了一段代码片段:Java 在方法中局部指定对象成员变量是否有好处?,java,netty,Java,Netty,在Netty中,我经常看到在类方法中本地分配对象成员变量。这是一个风格的问题还是有一个程序性的好处 我在下面包含了一段代码片段: public ChannelFuture bind() { validate(); SocketAddress localAddress = this.localAddress; if (localAddress == null) { throw new IllegalStateException("localAddress n
public ChannelFuture bind() {
validate();
SocketAddress localAddress = this.localAddress;
if (localAddress == null) {
throw new IllegalStateException("localAddress not set");
}
return doBind(localAddress);
}
我通常在关注多线程时看到这种模式。例如,如果另一个线程可能会更改成员值或在null检查后将其设置为null,那么在该点进行成员访问仍然是一个有效的用例。或者代码试图避免锁定/同步。因此,取而代之的是将成员复制到本地,所有进一步的操作都使用本地副本来完成,以防止空访问 请注意,
bind()
返回一个ChannelFuture
?我相信这样做是为了使对实例的localAddress
的更改不会影响绑定调用的结果(可能要到将来某个时候才能完成)。因此,防御性分配是有意义的。