2011-03-10 40 views

cevap

23

bilmek hakkında tüm yöntemler konsolunda bu deyimi kullanabilirsiniz kullanabilirsiniz:

javap java.packagename.classname

Örnek: javap java.lang.StringBuffer

49

Kaynaktan düz: http://java.sun.com/developer/technicalArticles/ALT/Reflection/ Daha sonra, komut satırından herhangi bir şey gerektirmeyen, kendi kendine yeten olmak için değiştirdim. ;-)

import java.lang.reflect.*; 

/** 
Compile with this: 
C:\Documents and Settings\glow\My Documents\j>javac DumpMethods.java 

Run like this, and results follow 
C:\Documents and Settings\glow\My Documents\j>java DumpMethods 
public void DumpMethods.foo() 
public int DumpMethods.bar() 
public java.lang.String DumpMethods.baz() 
public static void DumpMethods.main(java.lang.String[]) 
*/ 

public class DumpMethods { 

    public void foo() { } 

    public int bar() { return 12; } 

    public String baz() { return ""; } 

    public static void main(String args[]) 
    { 
     try { 
      Class c = DumpMethods.class; 
      Method[] m = c.getDeclaredMethods(); 
      for (int i = 0; i < m.length; i++) 
      System.out.println(m[i].toString()); 
     } catch (Throwable e) { 
      System.err.println(e); 
     } 
    } 
} 
+0

Yani, Sınıfı myClass adıyla değiştirdim? –

+0

Bunu java DumpMethods com.mypackage.MyClass' – corsiKa

+0

komut satırından kullanırsınız. Ayrıca "args [0]' "com.mypackage.MyClass" 'ile de değiştirebilirsiniz. Varsayılan paketi kullanıyorsa, sadece "MyClass" 'ı kullanabilirsiniz. – corsiKa

5
public static Method[] getAccessibleMethods(Class clazz) { 
    List<Method> result = new ArrayList<Method>(); 
    while (clazz != null) { 
     for (Method method : clazz.getDeclaredMethods()) { 
      int modifiers = method.getModifiers(); 
      if (Modifier.isPublic(modifiers) || Modifier.isProtected(modifiers)) { 
       result.add(method); 
      } 
     } 
     clazz = clazz.getSuperclass(); 
    } 
    return result.toArray(new Method[result.size()]); 
} 
İlgili konular