मैं इस सामान्य कार्य हो: इस कोड के साथ मुख्य रूप सेवापसी प्रकार (जावा)
public static <T extends Number> T sum(List<T> list){
Number tot = 0;
for(Number n: list){
tot = tot.doubleValue() + n.doubleValue();
}
return (T)tot;
}
याद:
public static void main(String[] args) {
ArrayList<Integer> listInt = new ArrayList<>();
listInt.add(3);
listInt.add(5);
listInt.add(6);
listInt.add(8);
System.err.println("Sum: " + Calcolatrice.sum(listInt))
}
इसलिए मैं (listInt पूर्णांकों का एक ArrayList जा रहा है) की उम्मीद कि फ़ंक्शन योग द्वारा लौटाया गया मान टी = इंटीजर है और इस मामले में, मुझे डबल से इंटीजर में एक रूपांतरण त्रुटि दें। परिणाम का प्रकार बदले में डबल है और कोई त्रुटि नहीं फेंक दी गई है। कास्ट (टी) कुल वांछित परिणाम नहीं है।
मुझे लगता है कि ऐसा इसलिए है क्योंकि जावा जेनेरिक स्टेंस चरण को संभालता है, लेकिन कोई बेहतर ढंग से समझाता है कि यह इस तरह क्यों काम करता है?
[प्रकार विलोपन] (https://docs.oracle.com/javase/tutorial/java/generics/erasure.html) वह शब्द है जो व्यवहार को बताता है .... –