即使其类不是泛型,构造函数也可以是泛型的.例如,下面的程序中,Summation类不是泛型的,但其构造函数是泛型的:
public class test2 { // @param args public static void main(String args[]) { Summation ob = new Summation(4.0); System.out.println("Summation of 4.0 is "+ob.getSum()); } } 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; } }
Summation类计算并封装传递给其构造函数的数值之和,N的和是0至N的所有整数的和,由于Summation()指定类型形参由Number约束,因此可以使用任何数值类型,包括Integer,float以及Double来构造Summation对象,不管使用何种数值类型,其值都通过调用intValue()方法转换为Integer,然后计算总和.因此,类Summation不需要泛型,只要其构造函数是泛型就可以了.