import java.util.*;
import java.lang.*;

class Main
{
    public static <T> List<T> init(int n) {
        List<T> l = new ArrayList<T>();
        while (n --> 0) l.add(null);
        return l;
    }
    public static void main(String[] args) {
        Main m = new Main();
        f(Main.<String>init(5)); // works, now init returns a List<String>
        f(m.<String>init(5)); // also works, although discouraged since init is static 
    }
    public static void f(List<String> l) {
        System.out.println("l: " + l);
    }
}