Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 类型对象中的方法toString()不适用于参数(集合<;描述>;)_Java - Fatal编程技术网

Java 类型对象中的方法toString()不适用于参数(集合<;描述>;)

Java 类型对象中的方法toString()不适用于参数(集合<;描述>;),java,Java,我是Java新手,我正在尝试编写一个描述类,该类将通过接口调用descripe返回字符串数组 此行:return Collections.toString(items)在标题中抛出了错误,我不明白为什么 我知道我需要返回string类型,并且条目当前不是一个字符串,但我对Java是新手,不确定要更改什么 运行时跟踪错误:java.lang.error:未解决的编译问题: 返回类型与descripe.descripe()不兼容 据我所知,您需要一个字符串数组,返回集合项中每个项目的字符串表示形式

我是Java新手,我正在尝试编写一个描述类,该类将通过接口调用descripe返回字符串数组

此行:
return Collections.toString(items)
在标题中抛出了错误,我不明白为什么

我知道我需要返回string类型,并且条目当前不是一个字符串,但我对Java是新手,不确定要更改什么

运行时跟踪错误:java.lang.error:未解决的编译问题: 返回类型与descripe.descripe()不兼容


据我所知,您需要一个
字符串
数组,返回
集合项中每个项目的
字符串
表示形式

迭代集合并调用每个
descripe
项的
toString()
方法,前提是
descripe
类有自己的
toString
实现

这将为集合中的每个项目获取一个字符串,收集它们并在最后返回

public String describe() {
    List<String> descriptions = new ArrayList<String>(items.size());
    for(Describe item: items) {
        descriptions.add(item.toString());
    }
    return descriptions.toArray(new String[items.size()]);
}
公共字符串descripe(){
列表描述=新的ArrayList(items.size());
用于(描述项目:项目){
descriptions.add(item.toString());
}
返回descriptions.toArray(新字符串[items.size()]);
}
现在,在“descripe()”方法中,我建议您执行以下操作:

1) 创建一个空字符串

2) 遍历集合并将每个元素作为字符串添加到已创建的空字符串中

3) 返回字符串

我上面描述的基本算法,现在是一个实现:

public String describe(){

    StringBuilder y = new StringBuilder();
    items.forEach(i -> y.append(i.toString()));

    return y.toString();

}
注意:要使其工作,您的项目必须设置为使用Java8或更新版本。如果不是,则需要对集合进行经典迭代,然后将每个元素附加到StringBuilder

注意2:“Description”类必须实现其“toString()”方法。但是,在实现它之前,应该在方法上方使用@Override注释:

@Override
public String toString(){...}

你好,Brennan,你能添加你得到的异常堆栈跟踪吗?Collections没有静态方法toString,因此你试图在Descripte函数中调用的方法实际上不存在。如果将其作为对象函数(return items.toString();)调用,则可以消除错误,但它仍不能执行所需的操作。请同时添加Decribe接口
public String describe(){

    StringBuilder y = new StringBuilder();
    items.forEach(i -> y.append(i.toString()));

    return y.toString();

}
@Override
public String toString(){...}