जावा 8 में डिफ़ॉल्ट विधि बनाते समय, कुछ Object
विधियों को डिफ़ॉल्ट विधि से कॉल करने योग्य नहीं हैं। उदाहरण के लिए:क्यों कुछ ऑब्जेक्ट विधियां डिफ़ॉल्ट विधियों से कॉल करने योग्य नहीं हैं?
interface I {
default void m() {
this.toString(); // works.
this.clone(); // compile-time error, "The method clone() is undefined for the type I"
this.finalize(); // same error as above.
}
}
ऐसा लगता है कि clone()
और finalize()
Object
से केवल तरीकों कि अनुमति नहीं है कर रहे हैं। संयोग से, ये Object
की एकमात्र विधियां हैं जो संरक्षित हैं, लेकिन यह प्रश्न विशेष रूप से डिफ़ॉल्ट तरीकों के संबंध में है, क्योंकि उन्हें java.lang.Object
का विस्तार करने वाले वर्गों द्वारा विरासत में प्राप्त किया जाएगा। इसका कारण क्या है?
संभावित डुप्लिकेट [क्लोन() विधि java.lang.Object में संरक्षित क्यों है?] (Http://stackoverflow.com/questions/1138769/why-is-the-clone-method- संरक्षित-in- जावा-लैंग-ऑब्जेक्ट) – Sean
@SPrashad मैं असहमत हूं। उस प्रश्न के साथ कुछ भी नहीं है कि यह इंटरफ़ेस की डिफ़ॉल्ट विधि में क्यों कॉल करने योग्य नहीं है। – rgettman