泛型的具体应用

本文深入探讨了Java泛型的概念,包括泛型类、泛型接口和泛型方法的定义与使用。通过具体代码示例,解释了泛型如何提高代码的复用性和安全性,以及在方法调用中类型参数的自动推导过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

(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);

}

}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值