2011-03-10 7 views

उत्तर

23

पता करने के लिए के बारे में सभी तरीकों कंसोल में इस बयान का उपयोग करें:

javap java.packagename.classname

उदाहरण: javap java.lang.StringBuffer

49

स्रोत से सीधे: http://java.sun.com/developer/technicalArticles/ALT/Reflection/ फिर मैंने इसे स्वयं निहित करने के लिए संशोधित किया, कमांड लाइन से कुछ भी आवश्यक नहीं है। ;-)

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

तो, मैं 'क्लास' को myClass नाम से बदलता हूं? –

+0

आप इसे कमांड लाइन 'जावा डंपमेथ्स com.mypackage.MyClass' – corsiKa

+0

से उपयोग करेंगे, आप 'args [0]' 'com.mypackage.MyClass" के साथ भी बदल सकते हैं। यदि यह डिफ़ॉल्ट पैकेज का उपयोग कर रहा है, तो आप केवल '"MyClass" का उपयोग कर सकते हैं। – 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()]); 
} 
संबंधित मुद्दे