调用print时发生错误(列表 a,T b)具有不同的T类

调用print时发生错误(列表 a,T b)具有不同的T类,第1张

调用print时发生错误(列表 a,T b)具有不同的T类

您应该了解的第一件事是,使用以下方法签名

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
,但是由于泛型不是多态的,所以它不起作用。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5565112.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-14
下一篇2022-12-14

发表评论

登录后才能评论

评论列表(0条)

    保存