3 回答
TA贡献1846条经验 获得超7个赞
当您转向String.join()的 javadoc 时,您会发现:
public static String join(CharSequence delimiter,
Iterable<? extends CharSequence> elements)
Returns a new String composed of copies of the CharSequence elements joined together with a copy of the specified delimiter.
...
Since:
1.8
这就是全部内容:您必须使用旧版本的 Java。
因此:您应该检查系统上可用的 JDK 版本(分别在调用 javac 时使用,或 IDE 指向的内容),并限制自己使用该版本的内容,或者(推荐)直接跳到 Java 8 ,或 Java 11。
TA贡献1853条经验 获得超6个赞
正如其他人提到的,该String功能出现在 Java 8 及以后版本中。
如果您打算坚持使用 Java 7,则可以使用以下解决方案:
private String getZnanjaList(){
List <String> listaZnanja = new ArrayList<>();
/*Map<String, String> znanja = new HashMap<>();
znanja.put("fruit", "apple");
znanja.put("animal", "dog");
znanja.put("vehicle", "ford");*/
for (String znanje : znanja.keySet()){
listaZnanja.add(znanje + ": " + znanja.get(znanje));
}
StringBuilder sb = new StringBuilder();
for(String s : listaZnanja) {
sb.append(";").append(s);
}
return sb.deleteCharAt(0).toString();
}
在这种方法中,我们利用了StringBuilder类。
您可以在文档中找到更多信息
TA贡献1811条经验 获得超5个赞
错误消息告诉您该类型String
没有带有签名的方法join(String, List<String>)
。由于String
用Java 8确实有方法 String.join(CharSequence, Iterable<CharSequence>)
,其将匹配(String
是一种类型的CharSequence
,并List
是一种类型的Iterable
),这意味着,不使用的Java 8或更新版本。
可能的解决方案:
将您的 JRE 或 JDK 更新到 Java 8 或更高版本。
更改一些内容,使您的代码使用机器上已有的 Java 8 或更高版本的 JRE 或 JDK。
更改代码,使其不依赖于 Java 8 功能。
更新到 Java 8 或更高版本是显而易见的选择。请注意您使用的是 JRE/JDK 而不是不同的。例如,Microsoft 经常将路径设置为指向其 JRE,该 JRE 可能较旧。
从命令提示符,您可以运行
java -version
检查您的版本。
互联网上已经有许多站点可以帮助您将 Java 指向正确的 JDK 或 JRE。例如这个答案。如果您仍然遇到问题,您可能想要发布一个关于您的%PATH%
和%JAVA_HOME%
变量(我假设是 Windows)以及您要使用的 JRE/JDK 的位置的新问题。
如果您只需要更新,搜索“下载 Java 8”应该会让您到达那里。
这个答案解释了如何手动执行此操作。同一问题的其他答案建议有用的图书馆。但实际上,更新为使用 Java 8 可能更好。
添加回答
举报