泛型学习笔记

@

泛型学习笔记

​ 泛型是java中一种很重要的知识,所谓泛型就是指在对象建立时不指定类中属性的具体类型,而由外部在声明及实例化对象时指定具体的类型。

​ 通常就是暂未确定一个类或方法属性的类型时,暂采用泛型。

​ 泛型产生的意义:为了保证数据的安全性,防止数据转换异常。

​ 泛型的基本使用,由外部指定其具体的操作类型。

​ 本文章暂只列举我认为两个比较重要的案例呦,哈哈,对泛型比较感兴趣的小伙伴可以去查找更详细的资料哦!

通过泛型方法返回泛型类实例

package chapter_ten;

//定义泛型类类Info
class Info<T>{
    private T var;
    public Info(){}
    public Info(T var){
        this.var = var;
    }
    public void setVar(T var){
        this.var = var;
    }
    public T getVar(){
        return this.var;
    }

    @Override
    public String toString() {      //覆写toString()方法
        return this.var.toString();
    }
}


//泛型学习测试,通过泛型方法传入固定的类型并返回此类的泛型类实例
public class Pag332 {
    public static void main(String[] args) {
        Info<Integer> info = fun(520);          //根据泛型方法返回具体的泛型类实例
        Info<Float> info1  = fun(32.01f);
        System.out.println(info);               //打印泛型对象
        System.out.println(info1);
    }


    /**
     * 通过泛型方法返回泛型类实例
     * 对返回Info对象的泛型类型上进行定义,泛型类型为Number类或其子类
     * @param param
     * @param <T>
     * @return
     */
    public static <T extends Number> Info<T> fun(T param){
        Info<T> info = new Info<T>();       //根据传入的数据类型实例化Info
        info.setVar(param);         //将传递的内容设置到Info对象的var属性中
        return info;                //返回实例化对象
    }

}

泛型的嵌套设置

package chapter_ten;

class InfoDemo<T,V>{
    private T var;
    private V value;

    public InfoDemo(){}
    public InfoDemo(T var, V value){    //构造方法传入参数
        this.var = var;
        this.value = value;
    }

    //setter()和getter()方法
    public void setVar(T var){
        this.var = var;
    }

    public T getVar(){
        return this.var;
    }

    public void setValue(V value){
        this.value = value;
    }

    public V getValue(){
        return this.value;
    }
}

//泛型嵌套设置,S类型在实例化时会以InfoDemo<String,Integer>类型传入
class Demo<S>{
    private S info;

    public Demo(){}
    public Demo(S info){    //构造方法传入参数
        this.info = info;
    }

    public void setInfo(S info){
        this.info = info;
    }

    public S getInfo(){
        return this.info;
    }
}


//对于泛型嵌套类的操作
public class Pag335 {
    public static void main(String[] args) {
        Demo<InfoDemo<String,Integer>> demo = null;     //定义泛型嵌套类对象demo
        InfoDemo<String,Integer> infoDemo = null;       //定义泛型类infoDemo对象

        infoDemo = new InfoDemo<String, Integer>("高立卫", 21);    //通过构造方法实例化泛型对象
        demo = new Demo<InfoDemo<String,Integer>>(infoDemo);        //通过构造方法实例化嵌套泛型类对象

        System.out.println(demo.getInfo().getVar()
                + "
" + demo.getInfo().getValue());            //输出嵌套泛型类中的数据
    }

}

原文地址:https://www.cnblogs.com/gaoliwei1102/p/13160309.html