我一直在调查java.lang.Long
类源代码。
考虑一下:
public final class Long extends Number implements Comparable<Long> {
....
private final long value;
....
public long longValue() {
return (long)value;
}
....
}
将long
投放到long
的原因是什么?
为什么不在这种情况下 reralize 序列化(?)到Number类?
P.S.1 source code link
我有这些可能的解释:
P.S.2
我的java版本 - 1.7.0_45-b18
P.S.3 仅供参考:
Integer
:
public final class Integer extends Number implements Comparable<Integer> {
....
private final int value;
....
public int intValue() {
return value;
}
....
}
Short
:
public final class Short extends Number implements Comparable<Short> {
....
private final short value;
....
public short shortValue() {
return value;
}
....
}
,Byte
和Character
也是如此。 (这些都不像是喜欢的。)
这是一个问题,还是可能只是被遗忘?
答案 0 :(得分:4)
我假设代码是针对相关方法统一的吗?
观察单一的代码风格。
public short shortValue() {
return (short)value;
}
public int intValue() {
return (int)value;
}
public long longValue() {
return (long)value;
}
public float floatValue() {
return (float)value;
}
public double doubleValue() {
return (double)value;
}
但我注意到在java 1.6(至少1.6_0_45)Integer
类
public int intValue() {
return (int)value;
}
但在java 1.7中为Integer
类
public int intValue() {
return value;
}
结论:开发人员没有注意到这方面的问题。
<强> P.S。强> 这只是我的假设。