2015-01-03 2 views
0

Я хочу создать экземпляр вложенныйстатический класс с отражением. У меня есть следующий код:JAVA создание экземпляра вложенного статического класса с отражением

if (Modifier.isStatic(nestedClass.getModifiers())) { 
       //TODO - WRITE HERE SOMETHING 
} else { 
    ctor = nestedClass.getDeclaredConstructor(outerClass); 
    ctor.setAccessible(true); 
    testInstance = ctor.newInstance(outerInstance); 
} 

, но не могу понять, что делать в если заявление. Некоторая помощь или совет будут оценены. Спасибо.

+0

Просто позвоните конструктору - Class.newInstance'. –

ответ

2

Уплотненный статический класс не требует внешнего экземпляра, поэтому попробуйте сделать то же самое, как и в else но удалить outerClass и outerInstance из аргументов конструктора.

ctor = nestedClass.getDeclaredConstructor();//no outer class in argument 
ctor.setAccessible(true); 
testInstance = ctor.newInstance();//no outer instance in argument 
+0

Спасибо ... (: – TT8

0

Попробуйте что-то вроде:

Class<MyClass> nestedClass = MyClass.class; 
if (Modifier.isStatic(nestedClass.getModifiers())) { 
    MyClass instance = nestedClass.newInstance(); 
    System.out.println(instance); 
} 
Output: 
[email protected] 
+0

Thx. Но, если nestedClass также является приватным, я получаю исключение. в любом случае вокруг него? – TT8