2010-08-12 6 views
56

अगर मैं का उपयोगजांचें कि जावा क्लासपाथ में क्लास अपने स्थिर प्रारंभकर्ता को चलाने के बिना मौजूद है या नहीं?

try { 
     Class.forName("my.package.Foo"); 
     // it exists on the classpath 
    } catch(ClassNotFoundException e) { 
     // it does not exist on the classpath 
    } 

"फू" के स्थिर प्रारंभकर्ता ब्लॉक की शुरूआत की है। क्या यह निर्धारित करने का कोई तरीका है कि कक्षा "my.package.Foo" क्लासपाथ पर अपने स्थिर प्रारंभकर्ता को लात मारने के बिना है?

उत्तर

76

forName(String name, boolean initialize, ClassLoader loader)Class की विधि का प्रयास करें और पैरा initialize से false पर सेट करें।

JavaDoc link

+3

काम करना चाहिए। एपीआई के मुताबिक: कक्षा केवल तभी प्रारंभ की जाती है जब प्रारंभिक पैरामीटर सत्य है और यदि इसे पहले शुरू नहीं किया गया है। – aioobe

+1

'क्लासलोडर' पैरामीटर को आम तौर पर 'this.getClass() पर सेट किया जाना चाहिए। GetClassLoader()'? – aliteralmind

+3

आपको Google खोज में मिले सभी परिणामों के बारे में पता है, आप केवल एक ही हैं जो प्रारंभिक पैरामीटर का उल्लेख करते हैं - यदि कोई सिर्फ कक्षा के अस्तित्व का परीक्षण कर रहा है तो वह मुझे बड़ी बात बताता है (वह आमतौर पर नहीं चाहता इसे लोड करें), आश्चर्य कीजिए कि अन्य लोगों ने इसका जिक्र क्यों नहीं किया। – ycomp

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