ArrayList<String>[] result = (ArrayList<String>[]) new ArrayList[3] 如何理解,详情如下

题目要求:创建一个元素是字符串列表的数组。
在数组中填入任意数据并在屏幕上显示。

•    createList 方法必须声明并初始化含 ArrayList<String> 元素的数组。
•    createList 方法必须返回创建的数组。
•    createList 方法必须在数组中添加元素(字符串列表)。这些列表不能为空。
•    程序应在屏幕上显示数据。
•    main 方法必须调用 createList 方法。
•    main 方法必须调用 printList 方法。

public class Solution {
    public static void main(String[] args) {
        ArrayList<String>[] arrayOfStringList = createList();
        printList(arrayOfStringList);
    }

    public static ArrayList<String>[] createList() {
      ArrayList<String>[] result = (ArrayList<String>[]) new ArrayList[3];//本行如何理解

        result[0] = new ArrayList<String>();
        result[1] = new ArrayList<String>();
        result[2] = new ArrayList<String>();

        result[0].add("Mama");
        result[1].add("Mila");
        result[2].add("Ramu");

        return result;
    }

    public static void printList(ArrayList<String>[] arrayOfStringList) {
        for (ArrayList<String> list : arrayOfStringList) {
            for (String s : list) {
                System.out.println(s);
            }
        }
    }
}

其实就是画蛇添足,直接写

ArrayList<String>[] result = new ArrayList<String>[3]

就可以了
这是先声明一个泛型列表,再强制转换回string类型,脱裤子放屁属于

集合数组。这样写也可以。

ArrayList<String>[] result =  new ArrayList[3];