java 8 collectors的问题类型不匹配:无法从List <Object>转换为List <String>

Nom*_*mad 14 java java-8 collectors

我正在使用早期版本的java 8工作代码,我用它从列表中获取唯一值但是因为我升级到JDK 66它给了我一个错误

类型不匹配:无法转换List<Object>List<String>

List<String> instList = new ArrayList<String>();

while (res.next()) {
    instList.add(res.getString("INST").toString());
}           

List<String> instListF = instList.stream().distinct().collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

水库的结果集我是从数据库中获取,不知道什么是错的任何想法?

Ash*_*mar 10

我最近也遇到过类似的错误Type mismatch: cannot convert from Set<Object> to Set<String>.以下是代码段 - :

public static void main(String[] args) {
    String[] arr = new String[]{"i", "came", "i", "saw", "i", "left"};

    Set<String> set = Arrays.asList(arr).stream().collect(Collectors.toSet());

    System.out.println(set.size() + "  distinct words: " + set);
}
Run Code Online (Sandbox Code Playgroud)

这是屏幕截图供参考 - : 在此输入图像描述

现在让我解释一下为什么我会收到此错误?在我的情况下,代码显示编译时错误,因为项目属性中的编译器版本不匹配.我选择了1.7,但它应该是1.8,因为1.8中添加了此功能.

在此输入图像描述

所以请记下以下几点:

  1. 已在Java Build Path中选择了适当的JDK .例如,在这种情况下为JDK 1.8.
  2. 必须在项目属性中的Java Compiler下(如上面的屏幕截图所示)选择适当的编译器版本.例如1.8

我希望这会对你有所帮助.