代码之家  ›  专栏  ›  技术社区  ›  Andez

Java-使用反射获取静态类的引用

  •  8
  • Andez  · 技术社区  · 14 年前

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

    假设我在包中定义了以下两个类 包1.subpackage.subsubsubpackage:

    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
    }
    

    指示找不到类时出错。能做到吗?

    2 回复  |  直到 8 年前
        1
  •  17
  •   Jim Garrison    14 年前

    是否尝试将嵌套类引用为

    MyMainClass$SalesObjectGrouper1
    

    嵌套类在内部命名为containingclassname$nestedclassname

        2
  •  3
  •   Tom Hawtin - tackline    14 年前

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