java - Object 类型中的 toString() 方法不适用于参数(Collection)
问题描述
我是 Java 新手,我正在尝试编写一个描述类,该类将通过我的接口调用 describe 返回一个字符串数组。
这行:return Collections.toString(items);
在标题中抛出错误,我不明白为什么。
我知道我需要返回类型字符串,并且项目当前不是字符串,但我是 Java 新手,不知道要更改什么。
运行时出现跟踪错误:java.lang.Error: Unresolved compiler problem: The return type is incompatible with Describe.describe()
package uk.ac.uos.assignment;
import java.util.*;
public class Description implements Describe {
private Collection<Describe> items;
public Description() {
this.items = new ArrayList<>();
}
public String describe() {
return Collections.toString(items);
}
public void add(Describe d) {
items.add(d);
}
}
这是我的界面:
package uk.ac.uos.assignment;
interface Describe {
String describe();
}
解决方案
现在,在“describe()”方法中,我建议您执行以下操作:
1)创建一个空字符串;
2)遍历集合并将每个元素作为字符串添加到您创建的空字符串中;
3) 返回字符串。
我上面描述的基本算法,现在这里是一个实现:
public String describe(){
StringBuilder y = new StringBuilder();
items.forEach(i -> y.append(i.toString()));
return y.toString();
}
注意:为此,您的项目必须设置为使用 Java 8 或更新版本。如果不是,您将需要通过 Collection 进行经典迭代,然后将每个元素附加到 StringBuilder。
注意 2:您的“描述”类必须实现其“toString()”方法。不过,在实现它之前,您应该在方法上方使用 @Override 注释:
@Override
public String toString(){...}
推荐阅读
- ios - 将十六进制字符串转换为字符串
- vue.js - VueJS:如何触发“更改”以编程方式更改
- asp.net - 无法使用 ApiController 进行 Owin 身份验证质询
- python - Pytorch 中(据称)空批次的运行时错误
- generics - 未来大型机人员可以学习和工作哪些技术
- mysql - 当我尝试将数据库 DataSource 添加到 Visual Studio“表 mysql.proc 不存在”时,如何解决此错误
- laravel - 在 Laravel 中返回相关书籍
- xpath - 选择系列中所有(动态创建的)项目匹配属性的节点
- c - 如何在 GCC 中启用已初始化但未使用的错误
- javascript - 如何从 HTML 访问 CSV 文件并将其保存在数组中(仅使用 Javascript)