boolean.class? - PullRequest
       21

boolean.class?

8 голосов
/ 19 июня 2009

На днях я заметил, что могу вызывать boolean.class, но не integer.class (или для других примитивов). Что делает булеву особенность?

Примечание: я говорю о boolean.class, а не Boolean.class (что имело бы смысл).

Дух: Я пробовал integer.class, а не int.class. Разве я не чувствую себя глупым: \

Ответы [ 5 ]

9 голосов
/ 19 июня 2009

Не 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
7 голосов
/ 19 июня 2009

Вы можете сделать int.class. Это дает так же, как Integer.TYPE.

int.class.isPrimitive(), boolean.class.isPrimitive(), void.class.isPrimitive() и т. Д. Даст значение true. Integer.class.isPrimitive(), Boolean.class.isPrimitive() и т. Д. Даст значение false.

3 голосов
/ 19 июня 2009

логическое значение не является особенным. Вы можете позвонить

int.class

например. Все примитивные типы имеют этот литерал. Из учебника Sun's :

Наконец, есть также особый тип литерала, называемый литералом класса, сформированный путем взятия имени типа и добавления ".class"; например, String.class. Это относится к объекту (типа Class), который представляет сам тип.

3 голосов
/ 19 июня 2009

Ну, вы можете сделать что-то вроде int.class также

System.out.println(int.class);

Ключевое слово .class было введено в Java 1.1, чтобы иметь согласованный способ получения объекта класса для типов классов и примитивных типов данных.

класс: Глоссарий Java

0 голосов
/ 08 декабря 2010

Может быть, глупое продолжение, но почему можно присвоить 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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...