2010-04-21 62 views
0

我正在使用.getDeclaredClasses()方法檢索已在對象中定義的所有類。但是,我無法檢索類中定義的匿名類。下面是我測試的代碼示例:使用Java反射檢索成員類

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

http://stackoverflow.com/questions/2679924/using-java-reflections-to-retrieve-member-classes – 2010-04-21 02:34:49

+0

@Michael:無限循環! – BalusC 2010-04-21 02:39:21

+0

該帖子的任何問題? – 2010-04-21 02:45:11

回答

1

隨着classpath中的幫助不大:

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