我正在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
答案 0 :(得分:4)
double
是一种原始类型。原始类型没有常见的超类型。换句话说,Object.class
不代表double.class
的超类。
可以将拳击转化应用于double
类型的值,并将其转换为类型Double
的值,该类型是Object
的子类型。这就是d
可分配给f
的原因。