java泛型——上下限
来源:互联网 发布:淘宝商品详情页设计 编辑:程序博客网 时间:2024/05/16 08:57
指定上限为T类:表示泛型必须为T类及其子类;指定上限为T接口:表示泛型必须为T接口及其实现类;
不管是类还是接口,格式都为extends T;
指定下限为T类:表示泛型必须为T类及其父类;
指定上限为T接口:表示泛型必须为T接口及其父接口;
不管是类还是接口,格式都为? super T;
不能只设置下限,设置下限的同时必须设置上限(参数例外);
- interface Inf1<T> {
- }
- interface Inf2 {
- }
- class A<T> {
- }
- class B<T> extends A<T> implements Inf1{
- }
- class C<T> extends B<T> {
- }
- class D extends C {
- }
例:
泛型T上限为B
- class Dog<T extends B> {
- private T t;
- private void fun1() {
- /**T的类型为B*/
- Dog dog = new Dog();
- }
- private void fun2() {
- /**T的类型为B*/
- Dog<B> dog = new Dog<B>();
- }
- private void fun3() {
- /**T的上限为B,即T只能是T及其子类所以下面代码是错的*/
- Dog<A> dog = new Dog<A>();
- }
- }
二、类的上下限
例:
T的上限为A,下限为C
- class Cat<T extends A<? super C>> {
- private T t;
- private void fun1() {
- Cat<A<? super C>> cat1 = new Cat<A<? super C>>();
- cat1.t = new A();
- cat1.t = new B();
- cat1.t = new C();
- }
- }
三、方法上限下,与类的上下限设置一样
例:
- class Point<T,K,V> {
- }
- class Test {
- /**强制要求show1参数Point对象被创建时,指定泛型
- * T上限为A;
- * K上限为Inf1;
- * V下限为B;
- * */
- public void show1(Point<? extends A, ? extends Inf1, ? super B> p) {
- }
- /**
- * T为B符合T上限为A; 因为B继承A类
- * K为B符合K上限为Inf1;因为B实现了Inf1
- * V为A符合V下限为B; 因为 A是B的父类
- */
- private void fun() {
- Point<B, B, A> point = new Point<B,B,A>();
- this.show1(point);
- }
- }
1 0
- java泛型——上下限
- java泛型之四——上下限
- Java泛型 泛型的上下限
- 泛型(4)——泛型的上下限
- 泛型-上下限
- Java泛型4—泛型的上限和下限
- java中泛型的上下限
- Java泛型_下限_super
- java泛型之三——参数泛型上下限
- javaseday18(泛型 上下限 T 和?)
- Java 泛型-泛型类、泛型方法、泛型接口、通配符、上下限
- Java 泛型-泛型类、泛型方法、泛型接口、通配符、上下限
- 看《Effective Java》学会的泛型设计--上下限
- highcharts 附有上下限
- 强制上下限分页
- 标准数据类型上下限
- The Java™ Tutorials — Generics :Lower Bounded Wildcards 有下限通配符
- java泛型上、下限
- Objective-C中的类学习第一篇(补)
- 数学的神奇精妙。为孩子收藏了!
- 数据库操作--存储过程
- GPS数据处理
- java.sql.resultset方法与使用技巧
- java泛型——上下限
- php学习笔记
- 2015-1-18链表,枚举 项目一:动态链表体验
- 关于servlet的常用api
- php易混函数区别
- 编程书籍推荐
- JavaWeb学习笔记第一讲---Tomcat配置
- Hadoop安装及配置
- RocketMQ与Kafka对比(18项差异)