我注意到有一天我可以調用boolean.class,但不是integer.class(或其他原語)。是什麼使布爾如此特別?boolean.class?
注:我在談論boolean.class,而不是Boolean.class(這將有道理)。
Duh:我試過integer.class,而不是int.class。我不覺得愚蠢:\
我注意到有一天我可以調用boolean.class,但不是integer.class(或其他原語)。是什麼使布爾如此特別?boolean.class?
注:我在談論boolean.class,而不是Boolean.class(這將有道理)。
Duh:我試過integer.class,而不是int.class。我不覺得愚蠢:\
不是integer.class
而是int.class
。是的你可以。 JRE 6:
public class TestTypeDotClass{
public static void main(String[] args) {
System.out.println(boolean.class.getCanonicalName());
System.out.println(int.class.getCanonicalName());
System.out.println(float.class.getCanonicalName());
System.out.println(Boolean.class.getCanonicalName());
}
}
輸出
boolean
int
float
java.lang.Boolean
你可以做int.class
。它與Integer.TYPE
相同。
int.class.isPrimitive()
,boolean.class.isPrimitive()
,void.class.isPrimitive()
等將給出值true
。 Integer.class.isPrimitive()
,Boolean.class.isPrimitive()
等,將給出值false
。
那麼你可以這樣做int.class
以及
System.out.println(int.class);
該關鍵字的.class用Java 1.1中引入有一個一致的方法來獲取類類型和基本數據類型的類對象。
布爾並不特殊。您可以撥打電話
int.class
例如。所有的原始類型都有這個文字。從Sun的Tutorial:
最後,還有一個特殊的文字稱爲類的文字,通過採取類型名稱和附加的「.class」形成的;例如,String.class。這是指表示類型本身的對象(類型爲Class)。
也許愚蠢的延續,但爲什麼可以分配給boolean.class類<布爾>,雖然哈希碼有什麼不同?
final Class<Boolean> c = boolean.class;
System.out.println("c := "+c);
System.out.println("boolean.class := "+boolean.class);
System.out.println("Boolean.class := "+Boolean.class);
System.out.println("boolean.class == Boolean.class := "+(boolean.class == Boolean.class));
System.out.println("boolean.class.equals(Boolean.class) := "+boolean.class.equals(Boolean.class));
System.out.println("boolean.class.hashCode := "+boolean.class.hashCode());
System.out.println("Boolean.class.hashCode := "+Boolean.class.hashCode());
因爲`boolean.class`的類型是`Class`。基元不能用作類型參數,因此不存在類「類」。最好不要將問題提交爲答案。這應該是它自己的問題,或者是對其他答案之一的評論。 –
gdejohn
2011-01-10 12:39:44