zoukankan      html  css  js  c++  java
  • Java泛型小记

    Automobile类:

    public class Automobile {
        private String name;
        public Automobile(String name){
            this.name= name;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    }

    Holder1类:持有指定的单一类型对象。

    public class Holder1 {
        private Automobile automobile;
        public Holder1(Automobile automobile){
            this.automobile = automobile;
        }
        public Automobile get(){
            return this.automobile;
        }
    }

    Holder2类:持有Object对象。

    public class Holder2 {
        private Object object;
        public Holder2(Object object){
            this.setObject(object);
        }
        public Object getObject() {
            return object;
        }
        public void setObject(Object object) {
            this.object = object;
        }
    }

    Holder3类:使用泛型,持有单一对象,但是暂时不指定其类型,到使用时决定持有何种对象。

    public class Holder3 <T>{
        private T t;
        public Holder3(T t){
            this.setT(t);
        }
        public T getT() {
            return t;
        }
        public void setT(T t) {
            this.t = t;
        }
    }

    主程序Main:

    public class Main {
        public static void main(String[] args) {
            /*使用Holder1*/
            Holder1 holder1 = new Holder1(new Automobile("Iphone"));
            System.out.println(holder1.get().getName());
            
            /*使用Holder2*/
            //使holder2持有String类型对象
            Holder2 holder2 = new Holder2("XiaoMi");
            System.out.println(holder2.getObject()); 
            //更改holder2中持有的对象类型
            holder2.setObject(new Automobile("HuaWei"));
            //向下转型Object->Automobile
            Automobile automobile = (Automobile) holder2.getObject();
            System.out.println(automobile.getName());
            
            /*使用Holder3*/
            //告诉编译器holder3持有的对象类型为String
            //此时holder3拥有的对象类型只能为String,不能变更
            Holder3<String> holder3 = new Holder3<String>("Vivo");
            System.out.println(holder3.getT());
            //告诉编译器anotherHolder3持有的对象类型为Automobile
            //此时anotherHolder3拥有的对象类型只能为Automobile,不能变更
            Holder3<Automobile> anotherHolder3 = new Holder3<Automobile>(new Automobile("Oneplus"));
            System.out.println(anotherHolder3.getT().getName());
        }    
    }

     程序运行结果为:

    Iphone
    XiaoMi
    HuaWei
    Vivo
    Oneplus
  • 相关阅读:
    ElasticSearch(ES)学习笔记
    Lucene學習日志
    velocity代码生成器的使用
    springboot学习笔记
    springmvc json 类型转换错误
    在做del业务时,传递参数,和接口中入参注释
    做add添加业务时,字符集乱码,form标签库,button的href 问题,添加后页面跳转,forward,redirect 。定制错误输出
    mybatis中联合查询的返回结果集
    mybatis分页,绝对路径的2种写法
    maven导入项目时报错,配置应用程序监听器[org.springframework.web.context.ContextLoaderListener]错误
  • 原文地址:https://www.cnblogs.com/znicy/p/6376120.html
Copyright © 2011-2022 走看看