संभव डुप्लिकेट:
Double brace initialisation (anonymous inner class) with diamond operatorगुमनाम आंतरिक कक्षाओं पर हीरा का प्रकार क्यों नहीं हो सकता है?
जावा 7 में और बाद में, हीरा एक मुद्दा बिना सामान्य रूप से तो जैसे पर प्रकार अनुमान लगाने के लिए इस्तेमाल किया जा सकता:
List<String> list = new ArrayList<>();
हालांकि, यह अज्ञात आंतरिक कक्षाओं के लिए इस तरह नहीं हो सकता है:
List<String> st = new List<>() { //Doesn't compile
//Implementation here
}
यह क्यों है? तार्किक रूप से इस परिदृश्य में, मैं निश्चित रूप से String
के रूप में प्रकार का अनुमान लगा सकता हूं। क्या इस निर्णय के लिए एक तार्किक कारण है जहां वास्तव में अज्ञात आंतरिक कक्षाओं पर प्रकार का अनुमान नहीं लगाया जा सकता है, या इसे अन्य कारणों से छोड़ा गया था?
@ फिलिप मैं असहमत हूं - वह प्रश्न पूछ रहा है कि क्यों कोड का एक निश्चित टुकड़ा संकलित नहीं करता है (वास्तव में जवाब यह है कि आप अज्ञात आंतरिक कक्षाओं के साथ हीरे का उपयोग नहीं कर सकते हैं), यह तकनीकी/तार्किक कारण पूछ रहा है * क्यों * जावा देव ने उस विशेष प्रतिबंध को जगह में रखना चुना। संबंधित, लेकिन शायद ही कभी एक ही बात है। – berry120
यह जेडीके 9 में काफी सुधार हुआ है: https://bugs.openjdk.java.net/browse/JDK-8062373 –