• 泛型学习笔记


    @

    泛型学习笔记

    ​ 泛型是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());            //输出嵌套泛型类中的数据
        }
    
    }
    
    
  • 相关阅读:
    java-多态
    java-继承
    java-访问修饰符
    mysql基础入门
    子查询
    多表查询
    mysql表(多对多)
    myslql主外键约束
    Sql语句分类
    Redis的一些介绍
  • 原文地址:https://www.cnblogs.com/gaoliwei1102/p/13160309.html
Copyright © 2020-2023  润新知