600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 020_泛型变量的类型限定

020_泛型变量的类型限定

时间:2019-04-09 18:06:47

相关推荐

020_泛型变量的类型限定

1.泛型变量的类型限定

1.1. 实例

public static <T> T get(T t1,T t2) { if(pareTo(t2) >= 0); // 编译错误 return t1; }

1.2. 因为, 在编译之前, 也就是我们还在定义这个泛型方法的时候, 我们并不知道这个泛型类型T, 到底是什么类型, 所以, 只能默认T为原始类型Object。所以它只能调用来自于Object的那几个方法, 而不能调用compareTo方法。

1.3. 可我的本意就是要比较t1和t2, 怎么办呢? 这个时候, 就要使用类型限定, 对类型变量T设置限定(bound)来做到这一点。我们知道, 所有实现Comparable接口的方法, 都会有compareTo方法。所以, 可以对做如下限定:

public static <T extends Comparable<T>> T get(T t1,T t2) { // 添加类型限定 if(pareTo(t2)>=0); return t1; }

2. 类型限定在泛型类、泛型接口和泛型方法中都可以使用, 不过要注意下面几点:

2.1. 不管该限定是类还是接口, 统一都使用关键字 extends

2.2. 可以使用&符号给出多个限定, 比如:

public static <T extends Comparable<T>&Serializable> T get(T t1,T t2)

2.3. 如果限定既有接口也有类, 那么类必须只有一个, 并且放在首位置:

public static <T extends Object&Comparable&Serializable> T get(T t1,T t2)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。