• 泛型的通配符的三种应用情况


    package com.java.GeneriationDmeo.www;

    import java.util.Collection;
    import java.util.HashSet;
    import java.util.Iterator;

    //写个动物的父类
    class Animal{
     private String name;
     private String Sex;
     

     public Animal() {
      super();
      // TODO Auto-generated constructor stub
     }
     
     public Animal(String name, String sex) {
      super();
      this.name = name;
      Sex = sex;
     }

     public String getName() {
      return name;
     }
     public void setName(String name) {
      this.name = name;
     }
     public String getSex() {
      return Sex;
     }
     public void setSex(String sex) {
      Sex = sex;
     }
     @Override
     public String toString() {
      return "Animal [name=" + name + ", Sex=" + Sex + "]";
     }
     
    }
    //创建狗类继承父类
    class Dog extends Animal{
     private String name;
     private String sex;
     

     public Dog() {
      super();
     }

     public Dog(String name, String sex) {
      super(name, sex);
      this.name=name;
      this.sex=sex;
     }
     
     public String getName() {
      return name;
     }

     public void setName(String name) {
      this.name = name;
     }

     public String getSex() {
      return sex;
     }

     public void setSex(String sex) {
      this.sex = sex;
     }

     @Override
     public String toString() {
      return "Dog [name=" + name + ", sex=" + sex + "]";
     }
     
    }
    //创建一个猫类继承父类
    class Cat extends Animal{
     private String name;
     private String sex;
     
     public Cat() {
      super();
     }
     public Cat(String name, String sex) {
      super(name, sex);
      this.name=name;
      this.sex=sex;
     }
     public String getName() {
      return name;
     }
     public void setName(String name) {
      this.name = name;
     }
     public String getSex() {
      return sex;
     }
     public void setSex(String sex) {
      this.sex = sex;
     }
     @Override
     public String toString() {
      return "Cat [name=" + name + ", sex=" + sex + "]";
     } 
    }

    public class GeneriationTest {

     public static void main(String[] args) {
      //创建一个Hashset集合
      HashSet<Dog> set1=new HashSet<Dog>();
      set1.add(new Dog("小黄","雌性"));
      set1.add(new Dog("小黑","雄性"));
      HashSet<Cat> set2=new HashSet<Cat>();
      set2.add(new Cat("心如","雌性"));
      set2.add(new Cat("冰冰","雌性"));
      //迭代器
      printList(set1);
     }
     /**
      * 通用迭代器
      * @param set
      */
     private static void printList(HashSet<? extends Animal> set) {
      for (Iterator<? extends Animal> it = set.iterator(); it.hasNext();) {
       System.out.println(it.next());
       
      }
     }
    }
    /*
     *
     * 不同的集合类型以及不同的元素类型 在同一个方法中调用的时候,我们可以传入通配符来使方法得到扩展
     * 通配符有三种使用方法
     * 1.<?>不加任何限制的
     * 2<? extends 类型1> 称为上限   可以传入类型1或者类型1的子类
     * 3<? super 类型1>称为下限   可以传入类型1或者类型1的父类
     *
     * /

  • 相关阅读:
    docker 日常使用笔记
    docker swarm:启动多个 overlay网络出现 could not find an available IP while allocating VIP问题
    docker 容器启动失败:Could not attach to network
    fabric : orderer启动失败
    git 代码迁移
    Docker 远程访问
    Struts2标签
    BS与CS的联系与区别
    Java的引用和C++的指针de区别
    抽象类和接口的区别
  • 原文地址:https://www.cnblogs.com/daoxiang1992/p/5738347.html
Copyright © 2020-2023  润新知