Java 原子整数';s get()与intValue()的比较

Java 原子整数';s get()与intValue()的比较,java,atomicity,Java,Atomicity,为什么AtomicInteger同时具有int get()和int intValue()?我看到它还有float value()和其他一些,来自Number。其中一个参数与维护AtomicInteger参数的原子性有关,还是两者都可以互换?它们应该可以互换。以下是AtomicInteger源代码的相关部分: public int intValue() { return get(); } 发件人: 抽象类编号是BigDecimal、BigInteger、Byte、Double、Float

为什么AtomicInteger同时具有int get()和int intValue()?我看到它还有float value()和其他一些,来自Number。其中一个参数与维护AtomicInteger参数的原子性有关,还是两者都可以互换?

它们应该可以互换。以下是
AtomicInteger
源代码的相关部分:

public int intValue() {
    return get();
}
发件人:

抽象类编号是BigDecimal、BigInteger、Byte、Double、Float、Integer、Long和Short类的超类

从类复制的说明:
Number以int形式返回指定数字的值。这可能涉及舍入或截断


由于
AtomicInteger
扩展了抽象类
Number
,因此必须实现抽象方法
intValue()
。在这种情况下,他们是平等的。对于其他类型(例如,
BigDecimal
Double
Float
),它更有意义。

intValue
定义:

/**
 * Returns the value of this {@code AtomicInteger} as an {@code int}.
 */
public int intValue() {
    return get();
}
/**
 * Gets the current value.
 *
 * @return the current value
 */
public final int get() {
    return value;
}
get
定义:

/**
 * Returns the value of this {@code AtomicInteger} as an {@code int}.
 */
public int intValue() {
    return get();
}
/**
 * Gets the current value.
 *
 * @return the current value
 */
public final int get() {
    return value;
}
您可以清楚地看到
get
方法是
final
<无法重写代码>最终方法


如果我们扩展AtomicInteger类,我们不能重写
get
方法,但是我们可以重写
intValue
方法。

这不是真的。得到是最终的。intValue不是最终的。这个答案解释了这两种方法之间的差异。但是,
AtomicInteger
为什么需要它们仍然没有解释。