我使用.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
答案 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 。