2013-07-14 2 views
0

Предположим, у меня есть класс Point. Когда я это сделаю:Класс.forName для массива пользовательских объектов

Class myClass = Class.forName("Point"); 

Это работает. Но когда я это делаю:

Class myNewClass = Class.forName("[L" + "Point"); 

Не работает. Что можно сделать, чтобы сделать эту работу?

+0

вы можете быть более усложняются, что вы пытаетесь достичь? – Algorithmist

+2

Я не верю, что это работает так, как вы полагаете. Он попытается загрузить класс с именем '[LPoint' вместо загрузки' Point' и создания массива. Я считаю, что вы хотите: 'Array.newInstance (myClass, length)', если я правильно понимаю использование myNewClass'. –

+2

@DaftPunk: Я считаю, что OP пытается получить экземпляр класса, представляющий тип 'Point []'. –

ответ

4

Вы забыли ;

Class.forName("[L" + "Point" + ";"); 

В java.lang.Class.getName:

Если этот класс объектов представляет класс массивов, то внутренняя форма имени состоит из названия типа элемента предшествовавшей одним или несколькими символами '[', представляющими глубину вложенности массива. Кодирование имен типов элементов выглядит следующим образом:

 
Element Type  │ Encoding 
───────────────────┼──────────── 
class or interface │ Lclassname; 
Смежные вопросы