为什么AtomicInteger同时具有int get()和int intValue()?我看到它还有来自Number的float floatValue()。是否有一个与维持AtomicInteger参数的原子性相关的含义,或者是否可以互换?
答案 0 :(得分:7)
它们应该是可以互换的。以下是AtomicInteger
的源代码的相关部分:
public int intValue() {
return get();
}
答案 1 :(得分:4)
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;
}
您可以清楚地看到get
方法是final
。无法覆盖final
个方法。
如果我们扩展AtomicInteger类,我们无法覆盖get
方法,但我们可以覆盖intValue
方法。
答案 2 :(得分:2)
抽象类Number是类BigDecimal,BigInteger,Byte,Double,Float,Integer,Long和Short的超类。
从班级复制的说明:
Number以int形式返回指定数字的值。这可能涉及舍入或截断。
当AtomicInteger
扩展抽象类Number
时,必须实现抽象方法intValue()
。在这种情况下,它们是平等的。对于其他类型(例如BigDecimal
,Double
或Float
),它更有意义。