Java Generics - สัญลักษณ์แทนขอบเขตบน
เครื่องหมายคำถาม (?) หมายถึงสัญลักษณ์แทนหมายถึงชนิดที่ไม่รู้จักในชื่อสามัญ อาจมีบางครั้งที่คุณต้องการ จำกัด ประเภทของประเภทที่อนุญาตให้ส่งผ่านไปยังพารามิเตอร์ type ตัวอย่างเช่นวิธีการที่ดำเนินการกับตัวเลขอาจต้องการยอมรับเฉพาะอินสแตนซ์ของ Number หรือคลาสย่อยเท่านั้น
ในการประกาศพารามิเตอร์ Wildcard ขอบเขตด้านบนให้ระบุ? ตามด้วยคีย์เวิร์ดขยายตามด้วยขอบเขตบน
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงให้เห็นว่าการขยายถูกใช้เพื่อระบุสัญลักษณ์แทนขอบเขตบนอย่างไร
package com.tutorialspoint;
import java.util.Arrays;
import java.util.List;
public class GenericsTester {
public static double sum(List<? extends Number> numberlist) {
double sum = 0.0;
for (Number n : numberlist) sum += n.doubleValue();
return sum;
}
public static void main(String args[]) {
List<Integer> integerList = Arrays.asList(1, 2, 3);
System.out.println("sum = " + sum(integerList));
List<Double> doubleList = Arrays.asList(1.2, 2.3, 3.5);
System.out.println("sum = " + sum(doubleList));
}
}
สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -
เอาต์พุต
sum = 6.0
sum = 7.0