zoukankan      html  css  js  c++  java
  • 泛型的通配符和上下限

    需求: 开发一个极品飞车的游戏,所有的汽车都能一起参与比赛。

    注意:

      虽然BMW和BENZ都继承了Car

      但是ArrayList<BMW>和ArrayLIst<BENZ>与ArrayList<Car>没有关系的!泛型没有继承关系!

      通配符:?

          ? 可以用在使用泛型的时候代表一切类型。

          E,T,K,V是在定义泛型的时候使用代表一切类型。

     泛型的上下限:

        ? extends Car : 那么?必须是Car或者其子类。(泛型的上限)

        ? super Car: 那么?必须是Car或者其父类。(泛型的下限。不是很常见)

       代码:

      

    package com.ithei.泛型的通配符;
    
    /**
     * @program: javaDemo01->Test
     * @description: 泛型的通配符
     * @author: 安生
     * @create: 2021-01-25 14:48
     **/
    
    import java.util.ArrayList;
    
    /**
      需求:  开发一个极品飞车的游戏,所有的汽车都能一起参与比赛。
    
     */
    public class Test {
    
        public static void main(String[] args) {
            ArrayList<BENZ> benzs = new ArrayList<>();
            benzs.add(new BENZ());
            benzs.add(new BENZ());
            run(benzs);
    
            ArrayList<BMW> bmws = new ArrayList<>();
            bmws.add(new BMW());
            bmws.add(new BMW());
            run(bmws);
    
            ArrayList<Dog> dogs = new ArrayList<>();
            dogs.add(new Dog());
            dogs.add(new Dog());
            //run(dogs);// 例如 这里如果不约束 就会出现狗与车一起参加赛车比赛的情况 不够严谨
        }
    
        //定义一个方法 让多辆车可以一起进入赛道!
        //这里在使用的时候 就用? 泛型的通配符  这样解决了出入问题  但是能出入还不够 还要约束一下
        //否则这里就有可能出现不严谨的情况
        //所以这里添加了泛型通配符的上限
        public static void run(ArrayList<? extends Car> cars){
    
        }
    }
    //首先定义一个汽车类
    class Car{
    
    }
    //定义宝马
    class BENZ extends Car{
    
    }
    //定义奔驰
    class BMW extends Car{
    
    }
    //定义狗
    class Dog{
    
    }
  • 相关阅读:
    poj 3070 矩阵快速幂模板
    poj3207 2-SAT入门
    poj 3683 2-SAT入门
    2-SAT开坑
    poj 1442 名次树
    hdu 3068 最长回文子串 TLE
    poj 3261 二分答案+后缀数组 求至少出现k次的最长重复子序列
    poj 1743 二分答案+后缀数组 求不重叠的最长重复子串
    后缀数组笔记
    poj2774 后缀数组 求最长公共子串
  • 原文地址:https://www.cnblogs.com/bichen-01/p/14325302.html
Copyright © 2011-2022 走看看