java 泛型中 T 和 问号的区别

2024-11-08 09:42:15
推荐回答(2个)
回答(1):

T自定义泛型和?通配符泛型
1.在整个类中只有一处使用了泛型,使用时注意加了泛型了参数不能调用与参数类型有关的方法比如“+”,比如打印出任意参数化类型集合中的所有内容,就适合用通配符泛型
public static void printCollecton(Collection collection)
{
for(Object obj: collection)
{
System.out.println(obj);
}
}

2.当一个类型变脸用来表达两个参数之间或者参数与返回值之间的关系时,即统一各类型变量在方法签名的两处被使用,或者类型变量在方法体代码中也被使用而不仅仅在签名的时候使用,这是应该用自定义泛型。泛型方可以调用一些时间类型的方法。比如集合的add方法。
public static T autoConvertType(T obj)
{
return(T)obj;
}

回答(2):

类型本来有:简单类型和复杂类型,引入泛型后把复杂类型分的更细了;

现在List, List 是 两种不同的类型;且 无继承关系;


泛型的好处如:

开始版本

public void write(Integer i, Integer[] ia);
public void write(Double  d, Double[] da);

泛型版本

public  void write(T t, T[] ta);