Вот пример.Предположим, что у вас есть класс с перегруженными методами для примитивных аргументов;Например,
public class Test {
public void test(int a) { .... }
public void test(char a) { .... }
}
Как можно рефлексивно получить объект Method
для одного из методов test
?Ответ: позвонив (например):
Class<?> testClass = Test.class;
Method method = testClass.getDeclaredMethod("test", int.class);
(обратите внимание, что также можно использовать Integer.TYPE
.)
Вы не можете создать экземпляр с помощью int.class.newInstance()
, он выдаст Exception
Это потому, что newInstance()
возвращает Object
, а примитивное значение не может быть объектом.Но также учтите, что:
SomeType.class.newInstance()
эквивалентно
new SomeType()
и теперь учтите, что Java не позволит вам использовать new
для создания примитивного значения.(И если бы это произошло ... что бы вы ожидали от фактического значения new int
?)
Вы не можете использовать их с генериками, так как для них требуются не примитивы.
Это правда, но ортогонально.Вы пишете List<MyClass>
, а не List<MyClass.class>
.Классовые литералы не обсуждаются.