为什么AtomicInteger同时具有int ()和int intValue()?我看到它还有floatValue()等,来自Number。是否与维持AtomicInteger参数的原子性有关,还是两者都是可互换的?
发布于 2013-08-21 18:41:55
它们应该是可互换的。以下是AtomicInteger源代码的相关部分
public int intValue() {
return get();
}发布于 2016-08-29 09:34:23
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方法。
发布于 2013-08-21 18:48:35
来自类文档
抽象类数是类BigDecimal、BigInteger、Byte、Double、Float、Integer、Long和Short的超类。
来自AtomicInteger文档
从课堂上复制的描述:
Number将指定数字的值作为int返回。这可能涉及舍入或截断。
由于AtomicInteger扩展了抽象类Number,因此必须实现抽象方法intValue()。在这种情况下他们是平等的。对于其他类型(例如BigDecimal、Double或Float),这更有意义。
https://stackoverflow.com/questions/18365206
复制相似问题