对象obj=真;但是Java说obj是布尔值

我试图了解一些关于 java 解释对象类型的方式。

这就是我的意思:

@Test
void checkObj() {
   // Output: INFO: Obj true is of type class java.lang.Boolean
   Object obj = true;
   log.info("Obj {} is of type {}", new Object[] {obj, obj.getClass()});
}

obj已经被声明为 typeObject并且我们知道它true是 type Boolean,对吧?所以当我们赋值trueobj为什么会java告诉我们这obj是类型Boolean而不是告诉我们它是类型Object

我看了两者的源代码实现BooleanObjectObject不是接口并且Boolean不扩展或实现Object因此多态性是不可能的那么两者之间的链接在哪里?

的源代码是这样Boolean开始的:

public final class Boolean implements Serializable, Comparable<Boolean> { // ...

的源代码是这样Object开始的:

public class Object { // ...

之间没有直接的联系Object,并Boolean尽可能的眼睛可以告诉。

回答

你从哪里看到Boolean不延伸Object

https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html

定义的前几行:

public final class Boolean extends Object implements Serializable, Comparable<Boolean>

您正在为 Object 分配一个原始布尔值,然后将其自动装箱到 Boolean 对象中。


以上是对象obj=真;但是Java说obj是布尔值的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>