泛型的使用

1.1 定义泛型接口
不仅可以声明泛型类,也可以声明泛型接口,声明泛型类和声明泛型接口语法类似,是在接口名称后边加上
格式:
interface 接口名称<泛型标识>{}

interface Info<T>   //在接口上定义泛型
{
    public T getVar() ;//定义抽象方法,抽象方法返回值是泛型类型
}

1.2 泛型接口实现的两种方式
定义子类,在子类上也声明泛型类型。

interface Info<T>       //在接口上定义泛型
{
    public T getVar()   ;   //接口下定义抽象方法,抽象方法返回值是泛型类型
}
class Info1<T> implements Info<T> //定义泛型接口的子类
{
    private T var ; //声明属性
    public Info1(T var) //构造方法 设置属性内容
    {
        this.setVar(var) ;
    }
    public void setVar(T var)
    {
        this.var = var ;
    }
    public T getVar()
    {
        return this.var ;
    }
}
public class GenericsDemo06
{
    public static void main(String[] args)
    {
        Info<String> i = null   ; //声明接口对象
        i = new Info1<String>("IronMan") ;//通过子类 实例化对象
        System.out.println("内容: "+i.getVar()) ;
    }
}

1.3 泛型方法
定义泛型方法
泛型方法中可以定义泛型参数,此时,参数的类型,就是传入数据的类型

[访问权限]<泛型标识>泛型标识 方法名称([泛型标识 参数名称])
class Demo
{
    public<T>T run(T t) //可以接收任意类型的数据
    {
        return t ;      //直接把参数返回
    }
}
public class GenericsDemo07
{
    public static void main(String[] args)
    {
        Demo d = new Demo() ;   //实例化对象
        String str = d.run("IronMan") ; //传递字符串
        int i = d.run(20) ;             //传递整数 自动装箱
        System.out.println(str) ;       //输出内容
        System.out.println(i) ;     //输出内容
    }
}

1.4 通过泛型方法返回泛型类的实例
只要在方法中定义了泛型操作,则可以传递任意的数据类型。

class Info<T extends Number>    //extends Num指定上限,只能是数字类型
{
    private T var ;             //定义属性,var由外部决定
    public void setVar(T var)
    {
        this.var = var ;
    }
    public T getVar()
    {
        return this.var ;
    }
    public String toString()        //覆写Object类中的toString()方法
    {
        return this.var.toString() ;//直接打印信息
    }
}
public class GenericsDemo08
{
    public static void main(String[] args)
    {
        Info<Integer> i = run(20) ; //引用传递
        System.out.println(i) ;
    }
    public static <T extends Number> Info<T> run(T param)
    {
        Info<T> temp = new Info<T>() ; //根据传入的类型实例化对象
        temp.setVar(param) ;        //将传入的内容设置到Info对象的var属性中 
        return temp ;               //返回实例化对象
    }
}

1.5 泛型数组
使用泛型方法的时候,可以传递或返回一个泛型数组

public class GenericsDemo09
{
    public static void main(String[] args)
    {
        Integer i[] = {1,2,3,4,5} ;     //返回泛型数组
        run2(i) ;
    }
    public static<T> T[] run1(T...arg)  //接收可变参数
    {
        return arg ;                    //返回泛型数组
    }
    public static <T> void run2(T param[])//输出
    {
        System.out.print("接收泛型数组:") ;
        for(T t:param)
        {
            System.out.print(t+",") ;
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值