可以将整数值分配到长变量中。 可以自动装箱整数值为Long引用变量。 但是将Integer对象分配给Long引用变量不可能。
我的观点是Integer / integer是Long / long支持的特定值范围。
因此,层次结构应为Integer扩展Long和Long扩展数字。
欢迎评论。
可以将整数值分配到长变量中。 可以自动装箱整数值为Long引用变量。 但是将Integer对象分配给Long引用变量不可能。
我的观点是Integer / integer是Long / long支持的特定值范围。
因此,层次结构应为Integer扩展Long和Long扩展数字。
欢迎评论。
Long
包含一个成员变量 (value
),它保存着这个 Long
的值。Integer
是 Long
的子类,那么 Integer
要么使用基类的那个 long
成员变量,这样会浪费空间(因为 long
占用的字节数是 int
的两倍),要么忽略它并使用自己的 int
成员变量,这样更加浪费空间(因为在这种情况下,Integer
类将包含自己的 int
成员变量和基类的 long
成员变量)。Collection
)。因此,任何会增加 Integer
存储空间的类层次结构都不是一个好主意。Integer i = 0;
if (i instanceof Long)
// yes! oops... Integer would be a Long
显然,在数学上这不是事实,也不应该是。
不要将共享值范围的类型与需要类型共享类层次结构的情况混淆。
关于存储等问题的讨论是实现细节,与本问题所涉及的语言设计考虑无关。
Integer
不应该扩展 Long
,但我不确定为什么这在数学上 "显然不是这种情况",因为作为一个 Integer
的每个数字都属于 Long
所涵盖的数字子集。你能详细说明一下你对这个声明的理解吗? - ajb