2015-07-31 3 views
6

Поскольку примитивный двойник представлен классом java.lang.Double, не следует удваивать.class равно java.lang.Double.class? (Это, конечно, также происходит на других примитивных типов тоже)Почему double.class не равен java.lang.Double.class?

System.out.println(double.class == Double.class); 

Выходные:

Result: false 
+0

они разные литералы классов – Reimeus

+0

'java.lang.Double' wraps/boxes' double', но это не то же самое. –

+0

@Trojaner Потому что это разные типы, которые не ведут себя одинаково. Например, вы не можете определить «Список », но вы можете определить «Список ». –

ответ

12

Double.class является объект класса, соответствующий типу обертки Double. double на самом деле не является классом, но double.class - это объект, используемый в отражении, чтобы указать, что аргумент или тип возврата имеет примитивный тип double.

3

double является примитивным типом, Double - тип класса. Существует собственность на Double класс под названием TYPE:

Например, System.out.println(double.class == Double.TYPE); отпечаток прав.

3

Это два отдельных экземпляра Class<Double>. Обычно это не происходит (для обычных объектов), но для классов-оболочек это точно способ различать поля примитивного типа и тип обертки в отражении.

Смежные вопросы