【问题标题】:Java - Get reference to a static class using reflectionJava - 使用反射获取对静态类的引用
【发布时间】:2026-01-22 18:40:01
【问题描述】:

在 Java 中,是否可以使用反射访问静态类(嵌套)的实例?

假设我在包 Package1.SubPackage.SubSubPackage 中定义了以下 2 个类:

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
}

会出错,提示找不到类。这个可以吗?

【问题讨论】:

  • 顺便说一句,使用 Class.forName() 不使用反射。

标签: java reflection class static


【解决方案1】:

您是否尝试过将嵌套类称为

MyMainClass$SalesObjectGrouper1

嵌套类在内部命名为 ContainingClassName$NestedClassName

【讨论】:

    【解决方案2】:

    为避免将 Java 语言类映射到 Java 运行时类中的黑客攻击,您可以使用 Class.getDeclaredClasses。使用反射通常是一个错误。处理嵌套类似乎不是一个好兆头。

    【讨论】: