2009-07-02 16 views
152

द्वारा सार है या नहीं, मैं एक जार फ़ाइल में कक्षाओं के माध्यम से बातचीत कर रहा हूं और उन लोगों को ढूंढना चाहता हूं जो सार नहीं हैं। मैं कक्षाओं को तुरंत चालू करके और InstantiationException को फँसाने से इसे हल कर सकता हूं लेकिन इसका प्रदर्शन एक प्रदर्शन है क्योंकि कुछ वर्गों में भारी स्टार्टअप है। मुझे क्लास.जावा डॉक्स में स्पष्ट रूप से सार सार() जैसी कुछ भी नहीं मिल रही है।मैं कैसे निर्धारित कर सकता हूं कि जावा क्लास प्रतिबिंब

उत्तर

261

क्लास ऑब्जेक्ट पर getModifiers() को कॉल करते समय यह इसके संशोधक में से एक के रूप में सार होगा।

यह link मदद करनी चाहिए।

Modifier.isAbstract(someClass.getModifiers()); 
इसके अलावा

:

http://java.sun.com/javase/6/docs/api/java/lang/reflect/Modifier.html

http://java.sun.com/javase/6/docs/api/java/lang/Class.html#getModifiers()

+1

धन्यवाद! एक छोटा सा नोट: आप एक वर्ग नाम के रूप में "कक्षा" का उपयोग नहीं कर सकते हैं, शायद आप अपना उदाहरण बदलना चाहते हैं। –

28
Class myClass = myJar.load("classname"); 
bool test = Modifier.isAbstract(myClass.getModifiers()); 
+0

इसके अलावा, क्या कहा जाता है। :) – Stobor

0
public static boolean isInstantiable(Class<?> clz) { 
    if(clz.isPrimitive() || Modifier.isAbstract(clz.getModifiers()) ||clz.isInterface() || clz.isArray() || String.class.getName().equals(clz.getName()) || Integer.class.getName().equals(clz.getName())){ 
     return false; 
    } 
    return true; 
} 
+0

यदि यह एक इंटरफ़ेस और क्लास नाम है java.util.List जैसा कि आप ArrayList बना सकते हैं –

संबंधित मुद्दे