java泛型约束_JAVA泛型 - 约束与局限性

泛型不能使用基本类型

Pair //Error

Pair // Right

运行时类型查询只适用于原始类型

虚拟机中的对象总有一个特定的非泛型类型。 因此, 所有的类型查询只产生原始类型。

if (a instanceof Pair) // Error

if (a instanceof Pair) // Error

Pair p = (Pair) a; // Warning-can only test that a is a Pair

Pair stringPair = . .

Pair employeePair = . .

if (stringPair.getClassO == employeePair.getClassO) // they are equal

不能创建参数化类型的数组

虚拟机在创建参数化类型数组时会擦除泛型

Pair[] table = new Pair[10];

// Error

Pair[] table = (Pair[])

new Pair>[10]; //不安全

ArrayList> //推荐

Varargs警告

在声明具有模糊类型(比如:泛型)的可变参数的构造函数或方法时,Java编译器会报unchecked警告。鉴于这些情况,如果程序员断定声明的构造函数和方法的主体不会对其varargs参数执行潜在的不安全的操作,可使用@SafeVarargs进行标记,这样的话,Java编译器就不会报unchecked警告。

@SuppressWamings("unchecked") 也可以排除警告

不能实例化类型变量

public Pair() { first = new T(); second = new T(); } // Error

官方文档给出一些实例化方案,不过我并没有看懂。 //TODO

不能构造泛型数组

public static

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值