Я создал схему базы данных в виде двухмерного массива строк. Я хотел бы объединить все это в формате, как
"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,
* ...
* )"
*/
}