Java generics ? super Type and ? extends Type

Hy All, in this post, going to tell you real-time scenario when you use super and extends

? super C

This indicates the lower bound, what exactly means that it can hold a list of object which is super to type C or C

? extends A

This indicates the upper bound, what exactly means that it can hold a list of object which is a child to type A or A.

Below is provided an example for the same,

package com.vinay.stock.poc;

import java.util.ArrayList;
import java.util.List;

/** * @author 912vi */public class GenericDemo {

    public static void main(String[] args) {

        List<A> list = new ArrayList<>();
        list.add(new A());
        list.add(new B());
        list.add(new C());
        test2(list);


        List<B> list1 = new ArrayList<>();
        list1.add(new B());
        list1.add(new C());
        test2(list1);

     /*   List<AA> list2 = new ArrayList<>();        test2(list2);// compile time error because upper bound is A type        */

        List<C> list3 = new ArrayList<>();
        list3.add(new C());
        test3(list3);

        List<B> list4 = new ArrayList<>();
        list4.add(new B());
        test3(list4);


      /*  List<D> list5 = new ArrayList<>();        list5.add(new D());        test3(list5); // compile time error , due to lower bound is C type
        */
    }

    public static void test2(List<? extends A> list) {
        System.out.println(list);
    }

    public static void test3(List<? super C> list) {
        System.out.println(list);
    }
}

class AA {

}

class A extends AA {

}

class B extends A {

}

class C extends B {

}

class D extends C {

}


Comments

Popular posts from this blog

12 Must-Know LeetCode+ Links for Coding Excellence

Stay Updated As Software Engineer

Getting Master in Hibernate and JPA