• 泛型 的通配符类型 extends super


    package generic;
    
    public class PairG<T> {
    
        T first;
        T second;
        public T getFirst() {
            return first;
        }
        public void setFirst(T first) {
            this.first = first;
        }
        public T getSecond() {
            return second;
        }
        public void setSecond(T second) {
            this.second = second;
        }
        
        
        public static void main(String[] args) {
            
            getPrintBuddy(new PairG<Employee>());
    //        getPrintBuddy(new PairG<Manager>());//error
            
            getPrintBuddyE(new PairG<Employee>());
            getPrintBuddyE(new PairG<Manager>());
            
            
            getPrintBuddyS(new PairG<Employee>());
            getPrintBuddyS(new PairG<Manager>());
      
        /**
          设置器和访问器不太懂 */ }
    //不能将参数类型传到静态方法 // public static T void method(T t){}//error //不能将 PairG<Manager> m 传递给这个方法 public static void getPrintBuddy(PairG<Employee> p){ Employee p1 = p.getFirst(); p.setFirst(new Employee()); } public static void getPrintBuddyE(PairG<? extends Employee> p){ //安全的访问器 Employee p1 = p.getFirst(); //编译器只知道Employee的类型,不知道具体的类型,所以拒绝传递任何特定的类型 // p.setFirst(new Employee()); //error } public static void getPrintBuddyS(PairG<? super Manager> p){ // Manager p1 = p.getFirst(); //error //安全的设置器 p.setFirst(new Manager()); } }
  • 相关阅读:
    sql server sa 用户 属性
    关于SQL执行顺序
    SQL server 数据库版本查询
    版本生成|Ext form输入框后加文字说明
    继承 tabpanel 对父类重新赋值 父类方法重写
    Ext.namespace() Ext命名空间介绍
    Ext.apply Ext.applyif 的理解
    下拉列表
    extjs表单FormPanel验证
    提高篇:第十三篇
  • 原文地址:https://www.cnblogs.com/lxh520/p/8436646.html
Copyright © 2020-2023  润新知