• bounded generic type


    If you have a class hierarchy A, B is a subclass of A, and C and D both are subclass of B like below

    class A {}
    class B extends A {}
    class C extends B {}
    class D extends B {}
    

    Then

    List<? extends A> la;
    la = new ArrayList<B>();
    la = new ArrayList<C>();
    la = new ArrayList<D>();
    
    List<? super B> lb;
    lb = new ArrayList<A>(); //fine
    lb = new ArrayList<C>(); //will not compile
    
    public void someMethod(List<? extends B> lb) {
        B b = lb.get(0); // is fine
        lb.add(new C()); //will not compile as we do not know the type of the list, only that it is bounded above by B
    }
    
    public void otherMethod(List<? super B> lb) {
        B b = lb.get(0); // will not compile as we do not know whether the list is of type B, it may be a List<A> and only contain instances of A
        lb.add(new B()); // is fine, as we know that it will be a super type of A 
    }
    

    A bounded wildcard is like ? extends B where B is some type. That is, the type is unknown but a "bound" can be placed on it. In this case, it is bounded by some

  • 相关阅读:
    尝试制作了一个Panorama
    Python小游戏之猜数字
    Java基础-多线程学习目录
    Java8学习笔记目录
    Guava学习笔记目录
    Angular4学习笔记-目录汇总
    Springboot学习笔记
    JavaWeb-Tomcat阀
    JavaWeb-Tomcat安全域
    JavaWeb-Servlet基础
  • 原文地址:https://www.cnblogs.com/jvava/p/7602267.html
Copyright © 2020-2023  润新知