जवाबों:
का उपयोग करें Modifier.isStatic(method.getModifiers())
।
/**
* Returns the public static methods of a class or interface,
* including those declared in super classes and interfaces.
*/
public static List<Method> getStaticMethods(Class<?> clazz) {
List<Method> methods = new ArrayList<Method>();
for (Method method : clazz.getMethods()) {
if (Modifier.isStatic(method.getModifiers())) {
methods.add(method);
}
}
return Collections.unmodifiableList(methods);
}
नोट: यह तरीका वास्तव में सुरक्षा दृष्टिकोण से खतरनाक है। Class.getMethods "bypass [es] SecurityManager तत्काल कॉलर के क्लास लोडर पर निर्भर करता है" (जावा सुरक्षित कोडिंग दिशानिर्देशों के अनुभाग 6 देखें)।
अस्वीकरण: परीक्षण या संकलित भी नहीं।
नोट Modifier
को सावधानी के साथ इस्तेमाल किया जाना चाहिए। चींटियों के रूप में प्रतिनिधित्व किए गए झंडे सुरक्षित नहीं हैं। एक सामान्य गलती एक प्रकार का प्रतिबिंब वस्तु पर एक संशोधक ध्वज का परीक्षण करना है जो यह लागू नहीं होता है। यह मामला हो सकता है कि उसी स्थिति में एक ध्वज कुछ अन्य सूचनाओं को दर्शाने के लिए सेट किया गया हो।
आप इस तरह से स्थिर तरीके प्राप्त कर सकते हैं:
for (Method m : MyClass.class.getMethods()) {
if (Modifier.isStatic(m.getModifiers()))
System.out.println("Static Method: " + m.getName());
}
पिछले (सही) उत्तर को बाहर निकालने के लिए, यहां एक पूर्ण कोड स्निपेट है जो आपको चाहिए (अपवादों को अनदेखा)
public Method[] getStatics(Class<?> c) {
Method[] all = c.getDeclaredMethods()
List<Method> back = new ArrayList<Method>();
for (Method m : all) {
if (Modifier.isStatic(m.getModifiers())) {
back.add(m);
}
}
return back.toArray(new Method[back.size()]);
}