泛型的其他应用---------(3)

来源:互联网 发布:淘宝客站内推广 编辑:程序博客网 时间:2024/06/04 18:20

1,泛型接口的使用

2,泛型方法的定义及使用

3,泛型数组的使用

4,泛型的嵌套设置

1,泛型接口

声明泛型接口和声明泛型类的语法类似,也是在接口名称后面加上,格式:
这里写图片描述

interface Info<T>{      // 在接口上定义泛型    public T getVar() ; // 定义抽象方法,抽象方法的返回值就是泛型类型}class InfoImpl implements Info{ // 定义泛型接口的子类    public String getVar(){        return null ;    }};

这样直接继承,使用,把泛型类型设置成了一个String,运行不会有问题,但是这样的使用,其实并不是最好的实现泛型接口的操作,最好在实现的时候,也指定其具体的泛型类型。

泛型接口的实现的两种方式

1,定义子类:在子类的定义上也声明泛型类型。

interface Info<T>{      // 在接口上定义泛型    public T getVar() ; // 定义抽象方法,抽象方法的返回值就是泛型类型}class InfoImpl<T> implements Info<T>{   // 定义泛型接口的子类,接口的泛型类型由这个实现类来指定,具体的数据类型,在声明这个类的时候进行指定    private T var ;             // 定义属性    public InfoImpl(T var){     // 通过构造方法设置属性内容        this.setVar(var) ;      }    public void setVar(T var){        this.var = var ;    }    public T getVar(){        return this.var ;    }};public class GenericsDemo24{    public static void main(String arsg[]){        Info<String> i = null;      // 声明接口对象        i = new InfoImpl<String>("李兴华") ;   // 通过子类实例化对象        System.out.println("内容:" + i.getVar()) ;    }};

如果现在实现接口的子类不想使用泛型声明,则在实现接口的时候直接指定好其具体的操作类型即可。

2,第二种:直接实现,在实现泛型接口的时候指定具体的泛型类型。

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

这里写图片描述

2,泛型方法

泛型出了可以为类中的属性指定数据类型以外,也可以定义方法,泛型方法所在的类是否是泛型类并没有任何关系。

定义泛型方法

泛型方法中可以定义泛型参数,此时参数的类型就是传入数据的类型,使用格式:
这里写图片描述

class Demo{    public <T> T fun(T t){          // 可以接收任意类型的数据        return t ;                  // 直接把参数返回    }};public class GenericsDemo26{    public static void main(String args[]){        Demo d = new Demo() ;   // 实例化Demo对象        String str = d.fun("李兴华") ; //  传递字符串        int i = d.fun(30) ;     // 传递数字,自动装箱        System.out.println(str) ;   // 输出内容        System.out.println(i) ;     // 输出内容    }};

这里写图片描述

原创粉丝点击