In previous tutorial, we have seen how to use wild card character . Wild card character allows to pass any type of list as parameter to the method . Then, how to force the method to allow particular type list or it’s sub types list as parameter . The answer is using ‘extend’ keyword. Now also we can’t add any element to list except null . See , below example.

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

public class Sample {
    public int size(List<? extends String> arrayList) {
        arrayList.add("raj"); // compiler error. except 'null' , we can't add
                                // any type
        return arrayList.size();
    }

    public static void main(String as[]) {
        List<String> names = new ArrayList<String>();
        List<Integer> age = new ArrayList<Integer>();
        names.add("sree");
        names.add("krish");
        age.add(10);
        System.out.println(new Sample().size(names));
        System.out.println(new Sample().size(age)); // causes compiler error
        // size method allows either String type or it's subtypes only
    }
}

We can extend either class or interface. We can’t extend both at once . If we extend interface, then method allows implementation classes type list .