期望的数组类型[编译错误]

St.*_*rio 6 java arrays

我正在使用以下方法:

public void m(List<? extends Object[]> objs){
    objs.stream()
        .map(oa -> oa[0])   //compile error
                            //array type expected
        .forEach(System.out::println); 

}
Run Code Online (Sandbox Code Playgroud)

DEMO

为什么不起作用?我认为扩展数组的所有东西都可以看作是一个数组.实际上我可以length从阵列中获得.

Boh*_*ian 5

实际上没有这样的课程延伸Object[]; 每个数组都有一个固定的类型和它自己的类,例如MyClass[].class

你应该使用一个类型化的方法:

public <T> void m(List<T[]> objs){
    objs.stream()
            .map(oa -> oa[0])   // no compile error
            .forEach(System.out::println);

}
Run Code Online (Sandbox Code Playgroud)

  • @Bohemian nit它不是一个排除它的实现原因,是规范所禁止的.(未能在我的手机上找到JLS的相关部分......) (2认同)