Java 中的 T,E,K,V, 别傻傻分不清楚!
在类型参数中使用 super 表示这个泛型中的参数必须是 E 或者 E 的父类。
dst 类型 “大于等于” src 的类型,这里的“大于等于”是指 dst 表示的范围比 src 要大,因此装得下 dst 的容器也就能装 src 。 ? 和 T 的区别 ?和 T 都表示不确定的类型,区别在于我们可以对 T 进行操作,但是对 ? 不行,比如如下这种 :
简单总结下: T 是一个 确定的 类型,通常用于泛型类和泛型方法的定义,?是一个 不确定 的类型,通常用于泛型方法的调用代码和形参,不能用于定义类和泛型方法。 区别1:通过 T 来 确保 泛型参数的一致性
像下面的代码中,约定的 T 是 Number 的子类才可以,但是申明时是用的 String ,所以就会飘红报错。 不能保证两个 List 具有相同的元素类型的情况
上面的代码在编译器并不会报错,但是当进入到 testNon 方法内部操作时(比如赋值),对于 dest 和 src 而言,就还是需要进行类型转换。 区别2:类型参数可以多重限定而通配符不行 使用 & 符号设定多重边界(Multi Bounds),指定泛型类型 T 必须是 MultiLimitInterfaceA 和 MultiLimitInterfaceB 的共有子类型,此时变量 t 就具有了所有限定的方法和属性。对于通配符来说,因为它不是一个确定的类型,所以不能进行多重限定。 区别3:通配符可以使用超类限定而类型参数不行 类型参数 T 只具有 一种 类型限定方式:
但是通配符 ? 可以进行 两种限定:
Class 和 Class 区别 前面介绍了 ? 和 T 的区别,那么对于,Class 和 又有什么区别呢? Class 和 Class (编辑:孝感站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |