जावा में, हमारे पास Collections.emptyList () और Collections.EMPTY_LIST हैं । दोनों के पास समान संपत्ति है:
खाली सूची (अपरिवर्तनीय) लौटाता है। यह सूची क्रमबद्ध है।
तो एक या दूसरे का उपयोग करने के बीच सटीक अंतर क्या है?
जावा में, हमारे पास Collections.emptyList () और Collections.EMPTY_LIST हैं । दोनों के पास समान संपत्ति है:
खाली सूची (अपरिवर्तनीय) लौटाता है। यह सूची क्रमबद्ध है।
तो एक या दूसरे का उपयोग करने के बीच सटीक अंतर क्या है?
जवाबों:
Collections.EMPTY_LIST
एक पुरानी शैली देता है List
Collections.emptyList()
टाइप-इनफेरेंस का उपयोग करता है और इसलिए रिटर्न करता है
List<T>
Collections.emptyList () जावा 1.5 में जोड़ा गया था और यह शायद हमेशा बेहतर होता है । इस तरह, आपको अपने कोड के भीतर अनावश्यक रूप से डालने की आवश्यकता नहीं है।
Collections.emptyList()
आंतरिक रूप से आपके लिए कास्ट करता है ।
@SuppressWarnings("unchecked")
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
स्रोत को मिलता है:
public static final List EMPTY_LIST = new EmptyList<>();
तथा
@SuppressWarnings("unchecked")
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
वे बिल्कुल बराबर की वस्तु हैं।
public static final List EMPTY_LIST = new EmptyList<>();
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
एकमात्र वह है जो emptyList()
सामान्य रिटर्न देता है List<T>
, इसलिए आप इस सूची को बिना किसी चेतावनी के जेनेरिक संग्रह को सौंप सकते हैं।
दूसरे शब्दों में, EMPTY_LIST सुरक्षित नहीं है:
List list = Collections.EMPTY_LIST;
Set set = Collections.EMPTY_SET;
Map map = Collections.EMPTY_MAP;
इसकी तुलना में:
List<String> s = Collections.emptyList();
Set<Long> l = Collections.emptySet();
Map<Date, String> d = Collections.emptyMap();