【发布时间】:2019-03-06 22:09:35
【问题描述】:
我已将数据库模式创建为二维字符串数组。我想把整个东西组合成一种格式,比如
"id INT AUTO_INCREMENT PRIMARY KEY,
ssl_support BOOLEAN NOT NULL,
supported_request_formats VARCHAR(7) NOT NULL,
... "
(为清楚起见添加了换行符)
但是,在我下面的代码中,Eclipse 以红色强调了以 Arrays.stream 开头的整个块,并用错误标记它
Cannot invoke collect(Collector<CharSequence,capture#5-of ?,String>) on the primitive type void.
我不明白这个错误,因为内部 collect() 应该返回 String,而不是 primitive type void。
private static final String[][] COLUMN_DATA = {
{"id", "INT", "AUTO_INCREMENT PRIMARY KEY" },
{ "ssl_support", "BOOLEAN", "NOT NULL" },
{ "supported_request_formats", "VARCHAR(7)", "NOT NULL" },
// ...
};
@Override
public String getCreationString() {
return "CREATE TABLE apis ("
+ Arrays.stream(COLUMN_DATA)
.forEach(col -> Arrays.stream(col)
.collect(Collectors.joining(" "))
)
.collect(Collectors.joining(", "))
+ ")";
/*
* Expected output:
*
* "CREATE TABLE apis (
* id INT AUTO_INCREMENT PRIMARY KEY,
* ssl_support BOOLEAN NOT NULL,
* supported_request_formats VARCHAR(7) NOT NULL,
* ...
* )"
*/
}
【问题讨论】:
-
您正试图根据
foreach的结果调用collect,但foreach没有返回 内容。
标签: java arrays string java-stream