Class#isAssignableFrom with Object和double

时间:2014-12-09 23:15:06

标签: java reflection

我正在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

1 个答案:

答案 0 :(得分:4)

double是一种原始类型。原始类型没有常见的超类型。换句话说,Object.class不代表double.class的超类。

可以将拳击转化应用于double类型的值,并将其转换为类型Double的值,该类型是Object的子类型。这就是d可分配给f的原因。

相关问题