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

/* Name of the class has to be "Main" only if the class is public. */
class Ideone {
    static <T> List<T>[] getArrayOfGenericObjects1(List<T>... a) {
        Object[] objectArray = a;
        objectArray[0] = new ArrayList<>(Arrays.asList(6, 7));
        // Ему вообще всё равно,
        T t = a[0].get(0);
        System.out.println(t.getClass());
        System.out.println(t);
        // что в себе хранить, потому что при type erasure T заменяется на Object
        t = a[1].get(0);
        System.out.println(t.getClass());
        System.out.println(t);
        return a;
    }

    static List<String>[] getArrayOfGenericObjects2(List<String>... a) {
        Object[] objectArray = a;
        objectArray[0] = new ArrayList<>(Arrays.asList(1, 2));
        // Вот тут справедливо возникает ClassCastException
        // String s = a[0].get(0);
        return a;
    }

    public static void main (String[] args) throws java.lang.Exception
    {
        List<String>[] arrayOfStringLists = getArrayOfGenericObjects2(
        	new ArrayList<>(Arrays.asList("1", "2")),
        	new ArrayList<>(Arrays.asList("3", "4", "5"))
		);

        arrayOfStringLists = getArrayOfGenericObjects1(
        	new ArrayList<>(Arrays.asList("1", "2")),
        	new ArrayList<>(Arrays.asList("3", "4", "5"))
		);
        List<String> stringList = arrayOfStringLists[0];
        // Но вот тут это ClassCastException
        String s = stringList.get(0);
    }
}