泛型上下限
来源:互联网 发布:Java多线程是并行的吗 编辑:程序博客网 时间:2024/05/05 10:48
1.Toy类
public class Toy {
}
2.SubToy类
public class SubToy extends Toy{
}
3.SubToy2类
public class SubToy2 extends Toy{
}
4.main类
import java.util.ArrayList;
import java.util.List;
public class main {
public static void main(String[] args) throws Exception{
Toy toy = new Toy();
SubToy subToy = new SubToy();
SubToy subToy2 = new SubToy();
List<? extends Toy> list = new ArrayList<Toy>();//表示所持有对象是Toy子类
List<? extends Toy> list1 = new ArrayList<SubToy>();//表示所持有对象是Toy的子类
// list.add(toy); 错误的 因为list所持有的对象类型上限为Toy,但是他不知道具体持有的对象类型,
// list.add(subToy); 错误的,理由同上
// list.add(subToy2); 错误的,理由同上
// list1.add(toy); 错误的 因为list1所持有的对象类型上限为Toy,但是他不知道具体持有的对象类型,
// list1.add(subToy); 错误的,理由同上
// list1.add(subToy2); 错误的,理由同上
List<? super Toy> list2 = new ArrayList<Toy>();//所持有对象为Toy的超类,下限为Toy,所以可以add() Toy及Toy的子类
list2.add(toy);
list2.add(subToy);
list2.add(subToy2);
// List<? super Toy> list3 = new ArrayList<SubToy>(); 错误的,所持有对象为Toy的超类,下限为Toy,
// 所以不可以超过下限Toy,将ArrayList泛型指定为SubToy
List<? super SubToy> list4 = new ArrayList<Toy>();//所持有对象为SubToy的超类,下限为SubToy ,
//可以将ArrayList泛型指定为Toy
// list4.add(toy); 错误的,因为虽然持有对象为SubToy的超类,但是容器不知道具体的类型是超类还是子类,所以不能放入超类,但是子类的话就可以的
list4.add(subToy);
list4.add(subToy2);//错误
List<? super SubToy> list5 = new ArrayList<SubToy>();//所持有对象为SubToy的超类,下限为SubToy ,
//可以将ArrayList泛型指定为SubToy
// list5.add(toy); 错误的,理由同list4
list5.add(subToy);
list5.add(subToy2);//错误
// List<? super SubToy> list6 = new ArrayList<SubToy2>(); 错误的,所持有对象为SubToy的超类,下限为SubToy ,
// 所以持有的对象可能为Toy,也可能为SubToy ,也就不能将具体的实现的泛型指定为SubToy2
}
}
public class Toy {
}
2.SubToy类
public class SubToy extends Toy{
}
3.SubToy2类
public class SubToy2 extends Toy{
}
4.main类
import java.util.ArrayList;
import java.util.List;
public class main {
public static void main(String[] args) throws Exception{
Toy toy = new Toy();
SubToy subToy = new SubToy();
SubToy subToy2 = new SubToy();
List<? extends Toy> list = new ArrayList<Toy>();//表示所持有对象是Toy子类
List<? extends Toy> list1 = new ArrayList<SubToy>();//表示所持有对象是Toy的子类
// list.add(toy); 错误的 因为list所持有的对象类型上限为Toy,但是他不知道具体持有的对象类型,
// list.add(subToy); 错误的,理由同上
// list.add(subToy2); 错误的,理由同上
// list1.add(toy); 错误的 因为list1所持有的对象类型上限为Toy,但是他不知道具体持有的对象类型,
// list1.add(subToy); 错误的,理由同上
// list1.add(subToy2); 错误的,理由同上
List<? super Toy> list2 = new ArrayList<Toy>();//所持有对象为Toy的超类,下限为Toy,所以可以add() Toy及Toy的子类
list2.add(toy);
list2.add(subToy);
list2.add(subToy2);
// List<? super Toy> list3 = new ArrayList<SubToy>(); 错误的,所持有对象为Toy的超类,下限为Toy,
// 所以不可以超过下限Toy,将ArrayList泛型指定为SubToy
List<? super SubToy> list4 = new ArrayList<Toy>();//所持有对象为SubToy的超类,下限为SubToy ,
//可以将ArrayList泛型指定为Toy
// list4.add(toy); 错误的,因为虽然持有对象为SubToy的超类,但是容器不知道具体的类型是超类还是子类,所以不能放入超类,但是子类的话就可以的
list4.add(subToy);
list4.add(subToy2);//错误
List<? super SubToy> list5 = new ArrayList<SubToy>();//所持有对象为SubToy的超类,下限为SubToy ,
//可以将ArrayList泛型指定为SubToy
// list5.add(toy); 错误的,理由同list4
list5.add(subToy);
list5.add(subToy2);//错误
// List<? super SubToy> list6 = new ArrayList<SubToy2>(); 错误的,所持有对象为SubToy的超类,下限为SubToy ,
// 所以持有的对象可能为Toy,也可能为SubToy ,也就不能将具体的实现的泛型指定为SubToy2
}
}
0 0
- 泛型上下限
- java泛型上、下限
- 通配符,泛型上下限
- java 泛型上下限
- 泛型上下限与比较
- java 泛型上下限的例子
- java泛型之三——参数泛型上下限
- Java集合中使用泛型参数及泛型上下限的问题
- highcharts 附有上下限
- 强制上下限分页
- 标准数据类型上下限
- JS,上限,下限,随机数
- 泛型的下限
- 泛型限行上限和下限
- 关于通配符上限下限
- 泛型-上下限
- 三维空间的上限和下限
- java泛型上限下限
- iOS沙盒文件读写
- HDU ACM 4539 郑厂长系列故事——排兵布阵->状态压缩DP
- iOS开发多线程篇—多线程简单介绍
- BestCoder Round #43 HDU 5065 关于数字取余的问题
- iOS开发多线程篇—创建线程
- 泛型上下限
- Oracle-数据库备份与恢复
- Android后端服务之Bmob使用
- Lintcode空格替换
- iOS开发多线程篇—线程安全
- (转)SQL索引
- Quartz 2D 简单使用
- Android开发——入门1
- iOS开发多线程篇—线程间的通信