【发布时间】:2022-01-03 23:26:24
【问题描述】:
我在创建一些数组时遇到了问题。
这里是代码
Predicate<Integer[]>[] endOfLine = {
curPoint -> curPoint[0]==r2,
curPoint -> curPoint[0]==c2,
curPoint -> curPoint[0]==r1,
curPoint -> curPoint[0]==c1
};
Consumer<Integer[]>[] move = {
curPoint -> { curPoint[0]++; },
curPoint -> { curPoint[1]++; },
curPoint -> { curPoint[0]--; },
curPoint -> { curPoint[1]--; }
};
和eclipse(也许是编译器?)说:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Cannot create a generic array of Predicate<Integer[]>
我google了一下,发现泛型类型参数数组不能用Java制作。
我阅读了有关编译时间和运行时的信息,我认为这可能不是我的问题。
我看到了一些编译编译的代码:
List<Integer>[] arrayOfLists = new ArrayList[2];
ArrayList<Integer[]> lists =new ArrayList<>();
ArrayList<Consumer []> [] lists = new ArrayList[5];
Predicate<Integer[]>[] p = new Predicate[5];
p[0] = a -> a[0] == 0;
Predicate<Integer[]>[] pp = { a -> a[0] == 0 }; //cant be compile
我阅读了 oracle 文档并发现了这个:
“无法创建参数化类型的数组”
我总结了我的快捷语法,{} 是问题所在。快捷语法创建具有参数化类型的代码。这是正确的吗?
【问题讨论】: