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
  • 相关阅读:
    一个简单实现的遮罩层
    文字内容过长是自动出现省略号
    Maven入门学习(下)
    Maven入门学习(上)
    使用ODP.NET查询数据参数顺序问题及莫名ORA-01722错误提示
    Xamarin开发Android笔记:TextView行间距设定
    Xamarin开发Android笔记:图片切换ImageSwitcher
    Xamarin开发Android笔记:背景操作
    UI创意求助:手机贪吃蛇游戏方向控制键设计
    做梦想起来的C#简单实现贪吃蛇程序(LinQ + Entity)
  • 原文地址:https://www.cnblogs.com/znicy/p/6376120.html
Copyright © 2011-2022 走看看