泛型的具体应用

通过定义一个普通类和一个泛型类进行对比:

(1)普通类:

class Bag{

private Object data;

public void add(Object obj){

data=obj;

}

public Object get(){

return data;

}

}

(2) 泛型类:

class Bag<T>{

private T data;

public void add(T t){

data=t;

}

public  T get(){

return data;

}

}

注:

1、T 不可用在类型中的静态方法、静态属性上,因为T的类型是在实例中确定,故不可以类初始化

2、T必须是引用类型

 interface INfo<T>{

public void setVar(T t);

}

class InfoImp1<T> implements Info<T>{  //泛型类的定义不必要在此时确定T的类型,可在实例中定义

public void setVar(T t){

System.out.println("泛型类实现接口的内容"+t);

}

}

class InfoImp2 implements Info<String>{  //普通类的定义必须要在此时确定T的类型

public void setVar(T t){

System.out.println("普通类实现的接口:"+t);

}

}

public class GenericInterfaceTest{

public static void main(String[] args){

InfoImpl<String> i1=new InfoImp1<String>();

i1.setVar(“泛型类”);

InfoImp2 i2=new InfoImp2();

i2.setVar("普通类");

}

}

  1.  泛型类
  2.  泛型接口
  3.  泛型方法

在Java的反省中,类型参数也可以用在方法的参数或者返回之中,这样的方法被称为泛型方法。泛型方法要在函数的修饰符之后、返回值之前声明类型参数,然后再方法的参数或者返回值处使用合适的类型参数即可,要注意这个类型参数的作用域仅限于方法内部。另外,泛型方法调用时,不需要显式地传递实参的类型,像普通方法调用即可。这主要是Java编译器具有类型推理能力,根据调用的泛型方法的参数的类型,推理得出被调用方法中类型变量的具体类型,并据此检查方法调用中类型的正确性。

public class GenericMethodTest{

public static void main(String[] args){

Integer i=new Integer(100);

String s="abc";

printdata(i);

printdata(s);

}

public static<T> void printdata(T t){

System.out.println("T的类型是"+t.getClass().getName());

System.out.println("T的内容是"+t);

}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值