মধ্যে পার্থক্য কি কি List, List<?>, List<T>, List<E>, এবং List<Object>?
1. তালিকা
List: এটি একটি কাঁচা টাইপ, অতএব নয় typesafe। কাস্টিং খারাপ হলে এটি কেবল রানটাইম ত্রুটি তৈরি করবে। কাস্ট খারাপ হলে আমরা একটি সংকলন সময় ত্রুটি চাই। ব্যবহার করার জন্য প্রস্তাবিত নয়।
2. তালিকা <?>
List<?>আনবাউন্ডেড ওয়াইল্ডকার্ড is তবে আমি নিশ্চিত নই এটি কিসের জন্য? আমি List<?>ইস্যু ছাড়াই মুদ্রণ করতে পারি :
public static void test(List<?> list){
System.out.println(list); // Works
}
আমি কেন আইটেম যুক্ত করতে পারি না List<?>?
public static void test(List<?> list){
list.add(new Long(2)); // Error
list.add("2"); // Error
System.out.println(list);
}
3. তালিকা <টি>
public static void test(List<T> list){ // T cannot be resolved
System.out.println(list);
}
আমি এই বাক্যবিন্যাস বুঝতে পারি না। আমি এরকম কিছু দেখেছি এবং এটি কাজ করে:
public <T> T[] toArray(T[] a){
return a;
}
কখনও কখনও, আমি দেখতে <T>, বা <E>, বা <U>, <T,E>। এগুলি কি সব একই বা তারা আলাদা কিছু উপস্থাপন করে?
4. তালিকা <অবজেক্ট>
এটি ত্রুটিটি দেয় " test(List<Object>)তর্কটির জন্য পদ্ধতিটি প্রযোজ্য নয় List<String>":
public static void test(List<Object> list){
System.out.println(list);
}
যদি আমি এই তারপর চেষ্টা আমি পেয়েছিলাম "থেকে নিক্ষেপ করা যাবে না List<String>করার List<Object>":
test((List<Object>) names);
আমি দ্বিধান্বিত. Stringএকটি সাবক্লাস হয় Object, তাহলে কেন List<String>একটি সাবক্লাস নয় List<Object>?
2। এটিকে প্রদর্শনের জন্য আমি কিছু কোড লিখি2। tyvm