interface Inf1 {
}
interface Inf2 {
}
class Animal {
}
class Person extends Animal {
}
class Girl extends Person {
}
class GoodGirl extends Girl {
}
class Man extends Person implements Inf1, Inf2 {
}
class GoodMan extends Man {
}
/**T:任意类或接口*/
class Test1<T> {
public T t;
public static void main(String[] args) {
/**T:任意类或接口,上限为Object*/
Test1 test1 = new Test1();
test1.t = "你好";
test1.t = new Man();
/**T:Girl类型*/
Test1<Girl> test2 = new Test1<Girl>();
/**T:Inf1类型*/
Test1<Inf1> test3 = new Test1<Inf1>();
test3.t = new Man();//t只能接收Inf1的实现类对象
}
}
/**T、K、M:任意类或接口,定义类时可以同时定义多个泛型类*/
class Test2<T,K,M> {
}
/**为类中定义的泛型指定上限,不管是接口还是类都使用extends来指定,可以指定
* 一个上限类,多个接口上限,如果同时指定类上限与接口上限要先指定类上限再指
* 定接口上限
* */
class Test3<T extends Inf1, K extends Girl, M extends Person&Inf1&Inf2>{
public T t;
public K k;
public M m;
public static void main(String[] args) {
Test3 aa = new Test3();
/**t只能赋接口Inf1实现类对象**/
aa.t = new Man();
/**k只能传Girl及其子类对象*/
aa.k = new GoodGirl();
/**m传的对象所属类既必须是Person(及其子类),
* 又必须同时是Inf1与Inf2的实现类 */
aa.m = new Man();
/**
* T:Man,Man是Inf1的实现类
* K:GoodGirl,GoodGirl是Girl的子类;
* M:GoodMan,GoodMan是Person的子类,又同时是接口Inf1与Inf2的实现类
* */
Test3<Man, GoodGirl, GoodMan> bb = new Test3<Man, GoodGirl, GoodMan>();
/**t只能赋值为GoodMan及其子类对象*/
bb.t = new GoodMan();
/**k只能赋值为GoodGirl及其子类对象*/
bb.k = new GoodGirl();
/**m只能赋值为GoodMan及其子类对象*/
bb.m = new GoodMan();
}
}
java泛型之一——类泛型
最新推荐文章于 2024-09-20 13:39:36 发布