【问题标题】:get() vs intValue() methods in AtomicIntegerAtomicInteger 中的 get() 与 intValue() 方法
【发布时间】:2016-08-29 09:43:17
【问题描述】:

AtomicInteger 类有 2 个方法,get()intValue(),定义如下。

intValue() 定义:

/**
 * Returns the value of this {@code AtomicInteger} as an {@code int}.
 */
public int intValue() {
    return get();
}

get() 定义:

/**
 * Gets the current value.
 *
 * @return the current value
 */
public final int get() {
    return value;
}

使用非 final 方法 intValue() 有什么好处吗?出于所有实际目的,如果我没有错,我们可以使用 get 方法。请说明这种做法是否有任何好处。

【问题讨论】:

  • 当您看到intValue() 而不是get 时,代码将更具可读性。
  • intValue() 方法的存在可能是为了与java.lang.Integer 类保持一致,该类也有一个intValue() 方法。
  • 方法intValue()之所以存在是因为AtomicInteger扩展了Number,它是抽象的。
  • @EJP 该死,这是我相信的答案;我正要写它,但你先想到了它。把它作为一个答案:p
  • @xenteros。在这里我要注意的另一点是方法名称通常以“verb”开头,但“intValue”违反了该约定。只是因为您在这里提到了可读性。

标签: java oop integer atomicinteger


【解决方案1】:

intValue() 方法的存在是因为 AtomicInteger 扩展了 Number,它是抽象的。

【讨论】:

  • 那么get()有什么用。 intValue() 的定义不能只是“返回值;”
  • @SreekanthKarumanaghat 当然可以。如果您想知道他们为什么添加get(),您必须询问作者。
  • 凡事都要有原因,我不能从马嘴里得到所有东西,我相信这就是这个网站存在的原因之一:)
  • 无论原因是什么,如果有的话,它隐藏在作者的脑海中,除非它是 (a) 在文档中说明 (b) 由正式规范暗示或 (c) 解释作者在这里发帖。您的第二条评论的答案是“不”。
  • 所有原子类型都有一个get 方法,包括那些没有intValue() 的逻辑模拟的方法。这只是为了与其他原子以及 Number 类型保持一致。
猜你喜欢
  • 2013-08-24
  • 1970-01-01
  • 1970-01-01
  • 2010-11-30
  • 1970-01-01
  • 2016-03-03
  • 2013-11-03
  • 2018-02-26
相关资源
最近更新 更多