Java - Получает ссылку на статический класс с помощью отражения

В Java действительно ли возможно получить доступ к экземпляру статического класса (вложенного) с помощью отражения?

Предположим, у меня есть следующие 2 класса, определенные в пакете Package1. SubPackage. SubSubPackage:

public class MyMainClass {  
   public static class SalesObjectGrouper1 {  
      public static final GrouperContext CONTEXT = new GrouperContext("MyDate");  
   }  

   private static class SalesObjectGrouper2 {  
      public static final GrouperContext CONTEXT = new GrouperContext("MyDate");  
   }  
}  

Если я выполняю следующий код:

try {
     xyz = Class.forName( "Package1.SubPackage.SubSubPackage.MyMainClass.SalesObjectGrouper1" );
} catch( ClassNotFoundException ex ) {
     // always hit the error
}

это будет ошибка, указывающая, что класс не может быть найден. Это может быть сделано?

8
задан ford prefect 30 March 2016 в 22:22
поделиться

2 ответа

Вы пробовали ссылаться на вложенный класс как

MyMainClass$SalesObjectGrouper1

Вложенные классы имеют внутреннее имя ContainClassName $ NestedClassName

18
ответ дан 5 December 2019 в 07:56
поделиться

Чтобы избежать хаков в отображении классов языка Java на классы среды выполнения Java, можно использовать Class.getDeclaredClasses. Использование отражения часто является ошибкой. Работа с вложенными классами не является хорошим знаком.

3
ответ дан 5 December 2019 в 07:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: