এই উদাহরণে:
import java.util.*;
public class Example {
static void doesntCompile(Map<Integer, List<? extends Number>> map) {}
static <T extends Number> void compiles(Map<Integer, List<T>> map) {}
static void function(List<? extends Number> outer)
{
doesntCompile(new HashMap<Integer, List<Integer>>());
compiles(new HashMap<Integer, List<Integer>>());
}
}
doesntCompile()
সংকলন করতে ব্যর্থ:
Example.java:9: error: incompatible types: HashMap<Integer,List<Integer>> cannot be converted to Map<Integer,List<? extends Number>>
doesntCompile(new HashMap<Integer, List<Integer>>());
^
যখন compiles()
কম্পাইলার দ্বারা গ্রহণ করা হয়।
এই উত্তরটি ব্যাখ্যা করে যে একমাত্র পার্থক্য হ'ল বিপরীতভাবে <? ...>
, <T ...>
আপনাকে পরে প্রকারটি উল্লেখ করতে দেয়, যা মনে হয় না।
কি মধ্যে পার্থক্য <? extends Number>
এবং <T extends Number>
এই ক্ষেত্রে কি কারনে চাইছি প্রথম কম্পাইল না?