जावा जेनेरिक क्लास बनाते समय कोण कोष्ठक में एक टिल्ड का क्या अर्थ है?


127

मैं कुछ JMockit उदाहरणों के माध्यम से पढ़ रहा था और इस कोड को पाया:

final List<OrderItem> actualItems = new ArrayList<~>();

जेनेरिक पहचानकर्ता में टिल्ड का क्या अर्थ है? मुझे पता है कि यह एकरी बिटवाइज़ नहीं ऑपरेटर है, लेकिन मैं यहाँ एक ऑपरेंड नहीं देखता।

इसके अलावा, मैंने इसे संकलित करने की कोशिश की और एक त्रुटि हुई। क्या मुझे कुछ याद आ रहा है?

जवाबों:


158

यह "घोषणा में भी वही है" के लिए सिर्फ एक आशुलिपि है।

कुछ IDEs, जैसे IntelliJ इसका भी उपयोग करते हैं।

डिस्क पर फ़ाइलों में यह संकेतन नहीं है, जो केवल IDE GUI में एक संघनन है।


1
यह एक Intellij स्क्रीनशॉट था।
माइकल के

बस व्यक्तिगत स्पष्टीकरण के लिए - IntelliJ इस संकेतन के साथ जावा स्रोत फ़ाइलों का निर्माण करता है, iaw, अवैध जावा सामग्री वाली स्रोत फाइलें ??? या यह केवल स्रोत का दृश्य है और सहेजी गई फ़ाइल सही है?
एंड्रियास डॉक

5
@Andreas_D: यह सिर्फ एक दृश्य है। डिस्क पर फ़ाइलें ठीक हैं।
ओपनकेज 15

6
और वास्तव में, टिल्ड को धूसर कर दिया जाता है (यह इंगित करने के लिए कि यह अलग है), और यदि आप इस पर क्लिक करते हैं, तो यह पूरी परिभाषा में विस्तार करेगा।
यशवित

1
इसे एडिटर / जनरल / कोड फोल्डिंग के लिए इंटेलीज सेटिंग्स में डिसेबल किया जा सकता है।
Ocie मिशेल

16

अगर वहाँ एक टिल्ड नहीं था, तो मैं कहूंगा, कोड पहले से ही जावा 7 था। जावा 7 डायमंड ऑपरेटर को अनुमति देता है, इसलिए यह है / होगी जावा जावा:

Map<String, List<String>> map = new HashMap<>();

(लेकिन - इस सिंटैक्स के साथ कोई टिल्ड नहीं)


9

इंटेलीज आईडीईए में, ~यहां:

Set<String> associations = new LinkedHashSet<~>();

का अर्थ है String, जो बाईं ओर की घोषणा के समान है।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.