2011-06-05 100 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(或任何接口/抽象類),則該方法將失敗。

相關問題