У меня возникла проблема с поиском решения для моей проблемы.
Мне нужно вызвать метод поля между struct () и методом build () x раз, чтобы создать новый объект. Это шаблон строителя.
Schema people = SchemaBuilder.struct()
.field("NAME", Schema.STRING_SCHEMA)
.field("SURNAME", Schema.STRING_SCHEMA)
.field("CITY", Schema.STRING_SCHEMA)
.build();
Но в моем случае поля схемы людей не определены с самого начала. Они должны быть переменными. Мне нужно что-то вроде:
String[] values = {"NAME", "SURNAME", "CITY", "FIELD4", "FIELD5", .....};
Schema people = SchemaBuilder.struct()
.xTimes.field(values[x], Schema.STRING_SCHEMA))
.build();
Я смотрел на потоки и лямбды, но никогда не работал с ними, и я не уверен, могут ли они быть решением для этого случая. Я не могу прервать методы. Все они должны быть вызваны в один ряд. То, что я пытаюсь сделать, даже возможно, и если да, то как?
Спасибо
РЕДАКТИРОВАТЬ: Это то, что я пытался, но не сработало:
public Schema buildSchema(String... fields){
sch1 = SchemaBuilder.struct();
for (int i = 0; i < fields.length; i++) {
sch1 =SchemaBuilder.struct().field(fields[i], Schema.STRING_SCHEMA);
}
return sch1;
}
Это прекрасно работает, но не соответствует моим потребностям:
public Schema buildSchema(){
Schema sch1 = SchemaBuilder.struct()
.field("foo", Schema.STRING_SCHEMA)
.field("bar", Schema.STRING_SCHEMA)
.field("duck", Schema.STRING_SCHEMA)
.build();
return sch1
}