【问题标题】:Is there a benefit of assigning an object member variable locally in a method? [duplicate]在方法中本地分配对象成员变量有好处吗? [复制]
【发布时间】:2016-03-29 20:04:33
【问题描述】:

在 Netty 中,我经常看到在类方法中本地分配的对象成员变量。这是风格问题还是有程序化的好处?

我在下面包含了一个代码 sn-p:

public ChannelFuture bind() {
    validate();
    SocketAddress localAddress = this.localAddress;
    if (localAddress == null) {
        throw new IllegalStateException("localAddress not set");
    }
    return doBind(localAddress);
}

【问题讨论】:

  • 注意到bind() 返回一个ChannelFuture?我相信会保留这一点,以便对 instance 的 localAddress 的更改不会影响绑定调用的结果(可能要到将来某个时候才能完成)。

标签: java netty


【解决方案1】:

当关注多线程时,我通常会看到这种模式。例如,如果另一个线程可能会在 null 检查之后更改成员值或将其设为 null,但它仍然是此时发生成员访问的有效用例。或者代码试图避免锁定/同步。因此,该成员被复制到本地,并且所有进一步的操作都使用本地副本完成,以防止空访问。

【讨论】:

  • 那么防守分配是有道理的。
猜你喜欢
  • 1970-01-01
  • 2012-09-05
  • 1970-01-01
  • 1970-01-01
  • 2013-01-09
  • 1970-01-01
  • 1970-01-01
  • 2022-06-21
  • 1970-01-01
相关资源
最近更新 更多