Java Generics - หลายขอบเขต
พารามิเตอร์ประเภทสามารถมีหลายขอบเขต
ไวยากรณ์
public static <T extends Number & Comparable<T>> T maximum(T x, T y, T z)
ที่ไหน
maximum - สูงสุดเป็นวิธีการทั่วไป
T- พารามิเตอร์ประเภททั่วไปส่งผ่านไปยังวิธีการทั่วไป สามารถใช้ Object ใดก็ได้
คำอธิบาย
T เป็นพารามิเตอร์ type ที่ส่งผ่านไปยังคลาสทั่วไป Box และควรเป็นประเภทย่อยของคลาส Number และต้องมีส่วนต่อประสานที่เปรียบเทียบได้ ในกรณีที่คลาสถูกส่งผ่านไปตามขอบเขตควรส่งผ่านก่อนที่อินเทอร์เฟซจะเกิดข้อผิดพลาดเวลาคอมไพล์
ตัวอย่าง
สร้างโปรแกรม java ต่อไปนี้โดยใช้โปรแกรมแก้ไขที่คุณเลือก
package com.tutorialspoint;
public class GenericsTester {
public static void main(String[] args) {
System.out.printf("Max of %d, %d and %d is %d\n\n",
3, 4, 5, maximum( 3, 4, 5 ));
System.out.printf("Max of %.1f,%.1f and %.1f is %.1f\n\n",
6.6, 8.8, 7.7, maximum( 6.6, 8.8, 7.7 ));
}
public static <T extends Number
& Comparable<T>> T maximum(T x, T y, T z) {
T max = x;
if(y.compareTo(max) > 0) {
max = y;
}
if(z.compareTo(max) > 0) {
max = z;
}
return max;
}
// Compiler throws error in case of below declaration
/* public static <T extends Comparable<T>
& Number> T maximum1(T x, T y, T z) {
T max = x;
if(y.compareTo(max) > 0) {
max = y;
}
if(z.compareTo(max) > 0) {
max = z;
}
return max;
}*/
}
สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -
เอาต์พุต
Max of 3, 4 and 5 is 5
Max of 6.6,8.8 and 7.7 is 8.8