使用Java Reflection检索成员类

时间:2010-04-21 02:27:57

标签: java reflection

我使用.getDeclaredClasses()方法来检索已在object中定义的所有类。但是,我无法检索类中定义的匿名类。这是我正在测试的代码示例:

public class TempCodes
{
  public static void main(String[] args)
  {
    Ball b = new Ball()
    {
      public void hit()
      {
        System.out.println("You hit it!");
      }
    };
    b.hit();
  }

  interface Ball {
    void hit();
  }
}

这就是我的代码所做的:

  memClass = className.getDeclaredClasses();
  if (memClass .length > 0) 
  {
        for (int index = 0 ; index < memClass .length ; index++)
        {
            System.out.println("\t\t\t" + memClass [index]);
        }
  }

任何人都可以帮我理解如何检索匿名类吗?

此致 darkie

1 个答案:

答案 0 :(得分:1)

在类路径的帮助下:

final Class<?> cls = TempCodes.class;
String[] names = new File(cls.getResource("").toURI()).list(new FilenameFilter() {
    public boolean accept(File dir, String name) {
        return name.startsWith(cls.getSimpleName());
    }
});
for (String name : names) {
    System.out.println(name);
}

结果:

TempCodes$1.class
TempCodes$Ball.class
TempCodes.class

您必须自己过滤所需的信息。

免责声明:与JAR文件不兼容,但提示足够清晰:反射不可能。我会质疑这一点,并重新考虑设计或方法。以下是一些感兴趣的主题:Java reflection: How can I retrieve anonymous inner classes?Accessing inner anonymous class members