Class.forName(boolean.class.getName());
Это не работает в Java - виртуальная машина дает вам исключение ClassNotFoundException. Мне нужно было что-то подобное, потому что я хотел отразить методы, основанные на строках, которые включали сигнатуры методов, например
public void doSomething(boolean yesWeCan, java.lang.String[] presidents);
В конце я придумал собственный ClassFactory, который переводит тип Strings в объекты класса. Эта фабрика включает в себя множество обработчиков для значений примитивов и массивов.
Обработчик для объектов типа массива выглядит примерно так:
if (isArrayOfObjects) {
return Class.forName("L["+typeName.replace("[]", "")+";");
}
Мой вопрос - я что-то упустил в Java 1.5+ API, что может сработать?
Редактировать
Спасибо за ваши ответы, неудивительно, что Class.forName
прекрасно работает с классами-обертками. Но я ищу решение для всех типов Java, включая массивы и примитивы. Таким образом, моя первая строка не опечатка. Некоторые сигнатуры методов имеют в качестве параметров java-примитивы, я не могу просто использовать класс-оболочку для отражения метода в библиотеке, мне действительно нужен объект Class для этого типа (например, логический).
Class<boolean> booleanClassObject = boolean.class;
отлично работает, как и
String name = boolean.class.getName();