জাভাতে, আমাদের কাছে সংগ্রহে.অম্পটিলিস্ট () এবং সংগ্রহ রয়েছে EM EMPTY_LIST । উভয়ের একই সম্পত্তি রয়েছে:
খালি তালিকা দেয় (অপরিবর্তনীয়)। এই তালিকাটি সিরিয়ালযোগ্য।
সুতরাং এক বা অন্য ব্যবহারের মধ্যে সঠিক পার্থক্য কি?
জাভাতে, আমাদের কাছে সংগ্রহে.অম্পটিলিস্ট () এবং সংগ্রহ রয়েছে EM EMPTY_LIST । উভয়ের একই সম্পত্তি রয়েছে:
খালি তালিকা দেয় (অপরিবর্তনীয়)। এই তালিকাটি সিরিয়ালযোগ্য।
সুতরাং এক বা অন্য ব্যবহারের মধ্যে সঠিক পার্থক্য কি?
উত্তর:
Collections.EMPTY_LIST
একটি পুরানো শৈলী ফেরত List
Collections.emptyList()
টাইপ-ইনফারেন্স ব্যবহার করে এবং তাই প্রত্যাবর্তন করে
List<T>
সংগ্রহ.এম্পটিলিস্ট () জাভা 1.5 তে যুক্ত করা হয়েছিল এবং এটি সম্ভবত সর্বদা পছন্দনীয় । এইভাবে, আপনাকে আপনার কোডের মধ্যে অপ্রয়োজনীয়ভাবে কাস্ট করার দরকার নেই।
Collections.emptyList()
অভ্যন্তরীণভাবে আপনার জন্য castালাই না ।
@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();