zoukankan      html  css  js  c++  java
  • 泛型通配符

    泛型通配符的使用

    package javabasis.fanxing;
    
    
    /*
    * 此处讲述泛型通配符相关内容
    *
    * 三种
    * ?
    * ? extends E
    * ? super E
    * */
    
    import org.junit.Test;
    
    class FanXingSymbols<T> {
    
        private T param;
    
        public FanXingSymbols(T param) {
            this.param = param;
        }
    
        public T getParam() {
            return param;
        }
    
        public void setParam(T param) {
            this.param = param;
        }
    }
    
    public class NO3FanXing2 {
    
        @Test
        public void test(){
    
            FanXingSymbols<?> fanXingSymbols = new FanXingSymbols<>(123);
            fanXingSymbols.getParam();
    //        fanXingSymbols.setParam(234234);
            //'setParam(capture<?>)' in 'javabasis.fanxing.FanXingSymbols' cannot be applied to '(int)'
            //无法使用set
    
    
            //构造的泛型类 必须是Number的子类, 并且只能取出不能加入.  因为在未编译时,无法判断此泛型类,指定的什么类型参数
            //符合消费者的概念 只能取 不能放
            FanXingSymbols<? extends Number > fanXingSymbols2 = new FanXingSymbols<>(123);
            fanXingSymbols2.getParam();
    //        fanXingSymbols2.setParam(454545);
    
    
            //只能放入 Integer的父类 或者父类的父类
            FanXingSymbols<? super Integer > fanXingSymbols3 = new FanXingSymbols<>(123);
            //取出使用Object
            Object a = fanXingSymbols3.getParam();
            fanXingSymbols3.setParam(4545);
    
        }
    }
    
    
  • 相关阅读:
    js调试技巧
    Java编程技巧——构建器
    java设计模式:工厂方法模式(Factory Method)
    23种设计模式导航
    java设计模式:单例模式(Singleton Pattern)
    迭代器与生成器
    装饰器
    文件操作的说明与使用
    函数命名、调用小技巧
    各类型数据的操作方法
  • 原文地址:https://www.cnblogs.com/yaoxublog/p/10944614.html
Copyright © 2011-2022 走看看