Java代码运行报错The target type of this expression must be a functional interface
报错提示:
The target type of this expression must be a functional interface
问题代码:return Arrays.asList(dataSet.getTableNames()).toArray(String[]::new);
报错原因
List.toArray(IntFunction<T[]>)是JDK 11才新增的重载方法,若你的项目编译、运行环境使用的JDK版本低于11,List接口不存在接收函数式接口参数的toArray实现,编译器无法为方法引用String[]::new匹配到对应的函数式接口目标类型,因此触发该报错。- 极小概率为你导入的
Arrays.asList返回的List并非标准java.util.List实现,不支持该重载,该场景出现概率极低,绝大多数情况为JDK版本不匹配导致。
解决方法
可根据你的项目约束二选一:
方案1:升级JDK版本到11及以上
调整项目的编译、运行环境JDK版本为11或更高版本,原有代码无需修改即可正常执行。
方案2:兼容低版本JDK(JDK 8及以下)
替换为旧版toArray的入参写法即可:
return Arrays.asList(dataSet.getTableNames()).toArray(new String[0]);
内容的提问来源于stack exchange,提问作者shubhendu shukla
相关产品推荐
相关产品推荐

