2011-06-05 71 views
0

假设我在Java中有一个类的值的数组,我想遍历数组来找到位于哪个位置的Double。 我试过如下:如何在没有实例化对象的情况下建立Java类类型?

public class ClassTypes { 

    public static void main(String[] args) { 
     Class []types = {String.class, Double.class}; 
     for (int i = 0 ; i < types.length; i++) 
     { 
       if (types[i].isInstance(Double.class)){ 
        System.out.println("DOUBLE"); //never printed 
       } 
     } 
    }} 

我有没有对象的实例,所以我不能使用instanceof,我想避免的类对象上使用的getName来进行比较。 任何人都可以建议我如何做到这一点?

+0

方法'isInstance'将'Object'作为参数,而不是'Class'的实际实例。 – toto2 2011-06-05 21:41:40

回答

3

types[i].equals(Double.class)

+0

谢谢...这就是我需要的 – Heisenbug 2011-06-05 21:42:05

+0

实际上,'=='而不是'equals()'在这里也是有效的。 – BalusC 2011-06-05 21:57:09

+0

是的类是==的定义,但既==和等于**不**反映'isInstanceOf',答案是误导。 – bestsss 2011-06-05 22:26:03

1

你实际需要的是Double.class.isAssignableFrom(types[i]),而不是equals而不是==(它们与Class相同)。对于像Double和String这样的最终课程,当然并不重要。

如果您试图检查该类是否为java.lang.Number(或任何接口/抽象类),则该方法将失败。

相关问题