zoukankan      html  css  js  c++  java
  • 泛型类,普通泛型类,限制型,通配符

     /**
     * 自定义普通泛型类
     * @author Administrator
     *
     * @param <T> 泛型
     */
    //public class GenericTest<T> {
    // private T member;
    // public T getMember() {
    //  return member;
    // }
    // public void setMember(T member) {
    //  this.member = member;
    // }
    //}

    public class Person {}

    public class Student extends Person {}

    public class Teacher {}

    /**
     * 限制型泛型类
     * @author Administrator
     *
     * @param <T> 泛型
     */
    public class GenericTest<T extends Person> {
     private T member;
     public T getMember() {
      return member;
     }
     public void setMember(T member) {
      this.member = member;
     }
    }

    /**************普通泛型类的使用*****************/
    // public static void main(String[] args) {
    //  GenericTest<String> generic = new GenericTest<String>();
    //  generic.setMember("abc");//正确,"abc"是字符串与泛型类型匹配
    //  //generic.setMember(100);//出错,100是整形与泛型类型不匹配
    //  
    //  //GenericTest<int> generic2 = new GenericTest<int>();//出错,泛型类型只能是引用类型,不能是原始类型
    //  GenericTest<Integer> generic2 = new GenericTest<Integer>();//正确
    // 
    //  GenericTest<Person> generic3 = new GenericTest<Person>();//正确
    //  Person p = new Person();
    //  p.setName("张三");
    //  p.setAge(23);
    //  generic3.setMember(p);
    // }

    /**************限制型的泛型类的使用*****************/
    // public static void main(String[] args) {
    //  GenericTest<Student> g1 = new GenericTest<Student>();//正确,因为Student有继承Person
    //  GenericTest<Teacher> g2 = new GenericTest<Teacher>();//错误,因为Teacher没有继承Person
    //  GenericTest<Person> g3 = new GenericTest<Person>();//正确,可以使用父类本身
    // }

    /**************通配符在泛型类中的使用*****************/
    // public static void main(String[] args) {
    //  //?是通配符,代表符合要求的类型
    //  GenericTest<? extends Person> g1 = new GenericTest<Student>();//正确
    //  GenericTest<? extends Person> g2 = new GenericTest<Teacher>();//错误
    //  GenericTest<? extends Person> g3 = new GenericTest<Person>();//正确
    // 
    //  GenericTest<? super Student> g4 = new GenericTest<Person>();//正确
    //  GenericTest<? super Student> g5 = new GenericTest<Student>();//正确
    //  GenericTest<? super Student> g6 = new GenericTest<Teacher>();//出错
    // }

  • 相关阅读:
    windows向Linux服务器上传、下载,服务器内复制、移动文件
    解决:ubuntu提示E: 无法获得锁 /var/lib/dpkg/lock-frontend
    PostgreSQL安装与简单操作
    LeetCode 234.回文链表
    LeetCode 445.两数相加 II
    LeetCode 24.两两交换链表中的节点
    LeetCode 19.删除链表的倒数第 n 个节点
    LeetCode 26.删除排序数组中的重复项
    Java 程序运行机制
    String 属于基础的数据类型吗?
  • 原文地址:https://www.cnblogs.com/danmao/p/3825264.html
Copyright © 2011-2022 走看看