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

    泛型:”参数化类型“;类似于方法中的形参。

    泛型类:

     1 public static void main(String[] args) {
     2         //传入泛型类型
     3         Data<String> data = new Data<String>("N","m");
     4         
     5         System.out.println(data.getBo());
     6         
     7         Data<Integer> data2 = new Data<Integer>(10,20);
     8         
     9         System.out.println(data2.getMo());
    10         
    11         //true;说明这两个对象终究还是同一个类型。泛型是只作用在编译期。
    12         System.out.println(data2.getClass() == data.getClass()); 
    13     }
    14 }
    15 //这里的泛型T有调用方来决定类型;
    16 class Data<T>{
    17     private T bo;
    18     private T mo;
    19     public Data(T bo,T mo) {
    20         super();
    21         this.bo = bo;
    22         this.mo = mo;
    23     }
    24     public T getBo() {
    25         return bo;
    26     }
    27     public void setBo(T bo) {
    28         this.bo = bo;
    29     }
    30     public T getMo() {
    31         return mo;
    32     }
    33     public void setMo(T mo) {
    34         this.mo = mo;
    35     }
    36 }

    泛型方法:

     1 public static void main(String[] args){
     2 
     3     //代码更灵活使用调用了;数据类型的限制被放大
     4     Pontprient("Java",100);
     5     
     6 }
     7 private static <V,K> void Pontprient(V m,K n) {
     8         
     9     V m1 = m;
    10     K n1 = n;
    11     System.out.println(m1+","+n1);
    12     
    13 }

    泛型接口/类:

    public class FanTypeInterfaceDemo {
        public static void main(String[] args) {
            List<bigPerson> list = new ArrayList<bigPerson>();
            list.add(new bigPerson("大爷"));
            list.add(new bigPerson("二大爷"));
            list.add(new bigPerson("三阿爷"));
            list.add(new bigPerson("四阿爷"));
            
            List<kids> listkid = new ArrayList<kids>();
            listkid.add(new kids("大宝"));
            listkid.add(new kids("小宝"));
            listkid.add(new kids("三宝"));
            
            sleepMoth(list);
            System.out.println("-------优雅的分割线-------");
            sleepMoth(listkid);
        }
        // 表示List中存储的是Persons对象或者Persons的子类对象
        // ? extends 类/接口 ---泛型的继承----表示可以使用的是这个类/子类/子接口对象
        // 确定了泛型的上限
        public static void sleepMoth(List<? extends Persons> person){
            for (Persons persons : person) {
                // 除了null以外不能存放其他的元素
                persons.sleep();
            }
        }
        // 表示可以传入String及其父类或者父接口的对象
        // ? super 类/接口 ---泛型的继承---表示可以使用这个类/父类/父接口的对象
        // 确定了泛型的下限
        public static void sleepMoth2(List<? super String> person) {
            // 可以向list中添加元素吗?---不可以---除了null以外,其余不行
        }
    
        
    }
    
    //定义接口和实现接口;
    interface Persons{
        void sleep();
    }
    class bigPerson implements Persons{
        private String name;
        
        public bigPerson(String name) {
            super();
            this.name = name;
        }
    
        @Override
        public void sleep() {
            System.out.println(name+"睡在沙发上...");
        }
        
    }
    class kids implements Persons{
        private String name;
        
        public kids(String name) {
            super();
            this.name = name;
        }
        @Override
        public void sleep() {
            System.out.println(name+"睡在婴儿车上....");
        }
        
    }
  • 相关阅读:
    进入到已有的docker容器中
    Ubuntu 18.04下指定Sublime Text 3 默认python编译版本
    设计模式之单例模式(c++版)
    clang10在ubuntu18.04下编译ZeroTier,故障解决
    搜狗输入法安装实践
    ubuntu 安装 dingtalk,飞书,google,zoom,时钟等
    js为某个元素添加某个类,并为其他兄弟元素删除此类
    jquery 中attr和css的区别
    unlimited tablespace 权限是否对所有表空间拥有权限测试
    Oracle DG 日常管理操作
  • 原文地址:https://www.cnblogs.com/tongxuping/p/6809687.html
Copyright © 2011-2022 走看看