我正在看java.lang.Class#isAssignableFrom来自Java Reflection in Action .
为什么 Object.class.isAssignableFrom(double.class):
打印为 false
,但 f
打印为 100.0
?
public class IsAssignableFrom {
public static void main(String[] args) {
double d = 100;
Object o = null;
System.out.println("Object.class.isAssignableFrom(double.class): " +
Object.class.isAssignableFrom(double.class));
Object f = d;
System.out.println("f: " + f);
}
}
让我们运行测试。
>javac IsAssignableFrom.java && java -cp . IsAssignableFrom
f: 100.0
Object.class.IsAssignableFrom(d): false
最佳答案
double
是原始类型。基本类型没有共同的父类(super class)型。换句话说,Object.class
并不代表 double.class
的父类(super class)。
装箱转换可以应用于 double
类型的值,并将其转换为 Double
类型的值,该类型是 Object
的子类型。这就是 d
可以分配给 f
的原因。
关于java - Class#isAssignableFrom 带有 Object 和 double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27390649/