首页 > 解决方案 > 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();
}

标签: java

解决方案


现在,在“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(){...}

推荐阅读