
您应该了解的第一件事是,使用以下方法签名
public static <T> void print(T a, T b)
双方
T必须 是同一类型,也就是既
a和
b将具有相同infered类型。
那么,为什么它的工作
newArrayList<String>()和
1?因为这两个参数实际上可以表示为
Serializable,这是最近的公用超类型
ArrayList和
Integer:
ArrayList
实现Serializable
接口。1
可以装进一个盒子Integer
,也可以Serializable
。
因此,在这种情况下,编译器将推断
T为
Serializable。
在第二种情况下,带有签名
public static <T> void print(List<T> a, T b)
没有通用的超级类型
T对
List<String>和均有效
Integer。
String和两者
Integer都是对的
Serializable,但是由于泛型不是多态的,所以它不起作用。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)