泛型[7]一个复杂泛型示例研究
来源:互联网 发布:淘宝激光脱毛器好用吗 编辑:程序博客网 时间:2024/06/07 18:06
在java.util.Collections中有这样一个方法
这里是在定义泛型 添加extends限制时 使用了泛型通配符 作为类型。
publicstatic <TextendsComparable<?super T>>void sort(List<T>list)
意思就是说,传进来的这个类型T得实现/继承自Comparable<?super T>。
Textends Comparable<?super T>
注意这里虽然Comparable是接口,但是依然是用extends,参见“定义&传递”章节extends interface小节。即
Timplements Comparable<?super T>
Java Code
public class Fruit {
}
class Apple extends Fruit implements Comparable<Object>{
@Override
public int compareTo(Object o) {
return 0;
}
}
//class Apple extends Fruit implements Comparable<Fruit>{
//
// @Override
// public int compareTo(Fruit o) {
// return 0;
// }
//
//}
//
//class Apple extends Fruit implements Comparable<Apple>{
//
// @Override
// public int compareTo(Apple o) {
// return 0;
// }
//
//}
////这样不行
//class Apple extends Fruit implements Comparable<FujiApple>{
//
// @Override
// public int compareTo(FujiApple o) {
// return 0;
// }
//
//}
class Pear extends Fruit{
}
class FujiApple extends Apple{
}
如果给Apple再嵌套泛型的时候,还可以这样
Java Code
class Apple<T> extends Fruit implements Comparable<Apple<T>>{
@Override
public int compareTo(Apple<T> o) {
return 0;
}
}
Java Code
ArrayList<Apple<Object>> list1 = new ArrayList<Apple<Object>>();
Collections.sort(list1);
ArrayList<Apple<String>> list2 = new ArrayList<Apple<String>>();
Collections.sort(list2);
但实际上做实验的时候还手残写了这样的,并且这个在传Apple<Object>的时候还可以通过,但是在传apple<Integer>的时候就露馅了。
Java Code
////这个只有T传Object的时候可以编译通过
class Apple<T> extends Fruit implements Comparable<T>{
@Override
public int compareTo(T o) {
return 0;
}
}
这是因为传Object的时候带入Apple<T>中是
Apple<Object> extends Fruitimplements Comparable<Object>
是满足
Timplements Comparable<?super T>
Apple<Object>implements Comparable<? superApple<Object>>
的
- 泛型[7]一个复杂泛型示例研究
- Annotation(二) 一个稍微复杂的示例
- 邮件开发:复杂邮件的一个示例
- 示例:复杂映射实例
- 复杂oracle示例
- 关系型数据库多表复杂查询使用示例
- 复杂网络研究的意义
- 研究复杂问题的简单化
- 正则表达式之复杂示例
- 一个复杂的工程进度
- 一个复杂的sql
- 一个“复杂的”SQL
- 【复杂网络系列】复杂网络研究常用载体集
- C# 写的一个泛型类和泛型方法示例
- 一个泛型类型List的简单示例
- Delphi驱动开发研究第三篇--一个完整的驱动程序示例
- spring-boot研究一:springboot初探,mysql+jdbc的一个示例
- 复杂网络研究常用载体集
- 自定义的Toast
- 【九度OJ】题目1026:又一版 A+B 解题报告
- configure: error: C++ preprocessor "/lib/cpp" fails sanity check
- 蓝桥杯 ADV-80 算法提高 选最大数
- S188 Online Casino Social Media Bonus Add Wechat
- 泛型[7]一个复杂泛型示例研究
- String中的compareTo与compareToIgnoreCase()方法解析
- 排序算法(4)——快速排序
- 构造函数
- 蓝桥杯 ADV-81 算法提高 数的运算
- Android集成百度定位,超详细,拒绝坑,附demo!!!
- GRPC入门教程
- JS实现全选、不选、反选
- 按列合并多个txt文件为csv文件的脚本