在 Java 中,为什么内置的数字类不相互扩展? Long 不应该扩展 Integer 扩展 Short 扩展 Byte,Double 扩展 Float 吗?
通常,当存在"is"关系时,通常会使用继承。那么每个 Integer 都是 Long 吗?我想是的。
我能想到的唯一可能的解释是无法正确处理溢出。例如,(byte)100 + (byte)100
是 -112
,而 (short)100 + (short)100
是 200
。然而,似乎应该有比保留错误行为更好的理由。
最佳答案
您的问题实际上可以通过两种不同的方式来解决:
如果我们谈论的是原语,那么关系就倒过来了。
但是,如果您询问的是 Integer
、Double
、Long
等类,那么所有数。
重要的是要指出,在 Java 中作为对象的数字源于一个常见的 Number
类 here .像您描述的那样在层次结构中分解它们没有多大意义,因为所有数字之间的方法本质上是相同的,尽管它们占用的内存大小不同。
简而言之,Java 中的层次结构是由类共享的关系(通常是方法)定义的,而不是它们在内存中占用的大小。
关于java - 为什么Java的数字类不相互扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26878117/