范型小结

package com.citi.jdk5;

 

public class FanxingTest {

 

public static void main(String[] args) {

Fanxing<String> f = new Fanxing<String>("Testing");

Fanxing<Integer> i = new Fanxing<Integer>(123);

Fanxing<Object> o = new Fanxing<Object>(new Object());

 

Fanxing<Number> n = new Fanxing<Number>(2345);

 

 

 

 

System.out.println("String>>>>>>:" + f.getData());

System.out.println("Integer>>>>>>:" + i.getData());

System.out.println("Object>>>>>>:" + o.getData());

System.out.println("-------------返回此 Object 的运行时类。--------------------------");

System.out.println("String>>>>>>:" + f.getClass());

System.out.println("Integer>>>>>>:" + i.getClass());

System.out.println("Object>>>>>>:" + o.getClass());

 

System.out.println("-------------?>>>getData--------------------------");

getData(n);

getData(i);

getData(f);

System.out.println("-------------?>>>getUpperNumberData--------------------------");

getUpperNumberData(n);

getUpperNumberData(i);

// getUpperNumberData(f);

 

System.out.println("-------------?>>>getLowerNumberData--------------------------");

getUpperNumberData(n);

getUpperNumberData(i);

// getUpperNumberData(f);

 

Fanxing<Student> s = new Fanxing<Student>(new Student());

Fanxing<Teacher> t = new Fanxing<Teacher>(new Teacher());

Fanxing<StudentLeader> sl = new Fanxing<StudentLeader>(new StudentLeader());

Fanxing<Animal> animal = new Fanxing<Animal>(new Animal());

 

 

Fanxing<AnimalFly> fa = new Fanxing<AnimalFly>(new AnimalFly());

Fanxing<PeopleFly> fp = new Fanxing<PeopleFly>(new PeopleFly());

 

System.out.println("-------<? Extends People>>>>Object Fatcher and Child Testing--------------------------");

getUpperStudentData(s);

getUpperStudentData(t);

getUpperStudentData(sl);

// getUpperStudentData(animal);

System.out.println("-------<? Super Student>>>>Object Fatcher and Child Testing--------------------------");

getLowerStudentData(s);

// getLowerStudentData(t);

getLowerStudentData(sl);

// getLowerStudentData(animal);

System.out.println("-------<? Super Student>>>>Inteface 实现类--------------------------");

getUpperFlyData(fa);

getUpperFlyData(fp);

}

//类型实参

public static void getData(Fanxing<?> data) {

System.out.println("data :" + data.getData());

}

 

//如果需要定义一个功能类似于getData()的方法,但对类型实参又有进一步的限制:只能是Number类及其子类。此时,需要用到类型通配符上限。

public static void getUpperNumberData(Fanxing<? extends Number> data){

System.out.println("?ExtendsNumber>>>"+ data.getData());

}

 

 

public static void getLowerNumberData(Fanxing<? super Number> data){

System.out.println("?SuperNumber>>>"+ data.getData());

}

 

//类型通配符上限,只有People自己和其子雷才能传入

public static void getUpperStudentData(Fanxing<? extends People> data){

System.out.println("?Extends>>>"+ data.getData());

}

 

//类型通配符下限,StudentLeader自己和其父类才能传入

public static void getLowerStudentData(Fanxing<? super StudentLeader> data){

System.out.println("?Extends>>>"+ data.getData());

}

 

 

//类型通配符上限,只有Fly的实现类才能传入

public static void getUpperFlyData(Fanxing<? extends Fly> data){

System.out.println("?Inteface>>>"+ data.getData());

}

 

 

}

//--------------------------范型类--------------------------

package com.citi.jdk5;

 

public class Fanxing <T>{

 

 

private T data;

 

public Fanxing(){

 

}

 

public Fanxing(T data){

this.data=data;

}

 

public T getData(){

return data;

 

}

 

}

转载于:https://my.oschina.net/ysk/blog/877749

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值