即使类本身并非泛型,其构造函数也可以是泛型的。以下示例展示了非泛型类Summation拥有泛型构造函数的用法:
// 使用泛型构造函数 class Summation { private int sum; <T extends number> Summation(T arg) { // 泛型构造函数 sum = 0; for (int i = 0; i <= arg.intValue(); i++) { sum += i; } } int getSum() { return sum; } } class GenConsDemo { public static void main(String args[]) { Summation ob = new Summation(4.0); System.out.println("4.0 的总和是 " + ob.getSum()); } }
Summation类计算并存储从0到构造函数传入参数的整数和。
泛型类型约束:
类型参数T受Number约束,这意味着构造函数可以接受任何Number类型的子类,例如Integer、Float或double。
类型转换:
intValue()方法用于将传入的Number类型参数转换为int类型,以便进行求和计算。
灵活性和优势:
虽然Summation类本身不是泛型,但使用泛型构造函数赋予了它处理不同数值类型的灵活性,而无需创建多个重载构造函数。 这种方式简洁高效。