对象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,对吧?所以当我们赋值true给obj为什么会java告诉我们这obj是类型Boolean而不是告诉我们它是类型Object?
我看了两者的源代码实现Boolean和Object。Object不是接口并且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 对象中。