आपने इसे Java documentation में काफी अच्छी तरह वर्णित किया है।
अपने पहले सवाल का जवाब बहुत सरल है। -implicit
विकल्प का उपयोग नहीं लगभग -implicit:class
का उपयोग कर (जो विकल्प का डिफ़ॉल्ट मान है) की तरह है, लेकिन स्पष्ट रूप से विकल्प का उपयोग कर आप कुछ चेतावनी को दबाने:
संकलक कुछ प्रकार की जानकारी के लिए की जरूरत नहीं खोज पाते जब तक के बाद एनोटेशन प्रोसेस पूर्ण हो। जब प्रकार की जानकारी किसी स्रोत फ़ाइल में पाई जाती है और -implicit
विकल्प निर्दिष्ट नहीं किया गया है, तो कंपाइलर चेतावनी देता है कि बिना एनोटेशन प्रोसेसिंग के अधीन फ़ाइल संकलित की जा रही है। चेतावनी को अक्षम करने के लिए, कमांड लाइन पर फ़ाइल निर्दिष्ट करें (ताकि यह एनोटेशन प्रोसेसिंग के अधीन हो) या -implicit
विकल्प निर्दिष्ट करने के लिए या क्लास फ़ाइलों को ऐसी स्रोत फ़ाइलों के लिए जेनरेट नहीं किया जाना चाहिए।
अब आपका दूसरा प्रश्न। प्रलेखन राज्यों के रूप में:
एक स्रोत फ़ाइल को संकलित करने के लिए, संकलक अक्सर एक प्रकार के बारे में जानकारी की जरूरत है, लेकिन प्रकार परिभाषा कमांड लाइन पर निर्दिष्ट स्रोत फ़ाइलों में नहीं है। संकलक हर वर्ग या इंटरफेस, इस्तेमाल किया बढ़ाया, या स्रोत फ़ाइल में लागू करने के लिए प्रकार की जानकारी की जरूरत है। यह वर्गों और इंटरफेस स्पष्ट रूप से स्रोत फ़ाइल में उल्लेख नहीं शामिल है, लेकिन है कि विरासत के माध्यम से जानकारी प्रदान करते हैं।
उदाहरण के लिए
, जब आप एक उपवर्ग java.applet.Applet बनाते समय, आपके एप्लेट के पूर्वज वर्गों का उपयोग हैं: java.awt.Panel
, java.awt.Container
, java.awt.Component
, और java.lang.Object
।
चलो तीन फाइलों में तीन कक्षाएं हैं: मुख्य, ImplicitClass, BaseImplicitClass।
Main.java:
public class Main {
public static void main(String[] args) {
ImplicitClass ec = new ImplicitClass();
System.out.println(ec.getClass());
}
}
ImplicitClass.java:
public class ImplicitClass extends BaseImplicitClass {
}
BaseImplicitClass।जावा:
public class BaseImplicitClass {
}
जब आप इस तरह कमांड लाइन से उन्हें संकलन:
javac -cp . -implicit:class Main.java
या
javac -cp . Main.java
तीनों * .class फ़ाइलों को बनाने से।
जब आप इसे
javac -cp . -implicit:none Main.java
केवल Main.class बनाई गई है संकलन।
जब आप इसे संकलन
javac -cp . -implicit:none Main.java ImplicitClass.java
दो * .class फ़ाइलें इस वर्ग के रूप में बनाई गई हैं, Main.class
और ImplicitClass.class
(ImplicitClass
अब स्पष्ट हो गया है, क्योंकि यह स्पष्ट रूप से संकलक करने के लिए पारित किया गया है), लेकिन नहीं BaseImplicitClass.class
जरूरी है, लेकिन निहित है।