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+"睡在婴儿车上....");
        }
        
    }
  • 相关阅读:
    linux常用命令
    TP5 使用额外查询
    高性能mysql[day 1]
    tp6 使用多模块/应用
    linux进程间通信的方式
    Mac将本地文件上传到Centos7(Linux)服务器上
    响应式Web设计:构建令人赞叹的Web应用程序的秘诀
    单页应用(SPA,Single-page-App)和多页应用(MPA,Multi-page App)的区别
    PWA(Progressive web apps),渐进式 Web 应用
    10年大佬博客
  • 原文地址:https://www.cnblogs.com/tongxuping/p/6809687.html
Copyright © 2011-2022 走看看