im teniendo problemas para encontrar una solución para mi problema.
Tengo que llamar al método de campo entre la estructura () y los de construcción () veces método X para crear un nuevo objeto. Es un Builder.
Schema people = SchemaBuilder.struct()
.field("NAME", Schema.STRING_SCHEMA)
.field("SURNAME", Schema.STRING_SCHEMA)
.field("CITY", Schema.STRING_SCHEMA)
.build();
Pero en mi caso, los campos del esquema de las personas no se definen desde el principio. Tienen que ser variable. Necesito algo como:
String[] values = {"NAME", "SURNAME", "CITY", "FIELD4", "FIELD5", .....};
Schema people = SchemaBuilder.struct()
.xTimes.field(values[x], Schema.STRING_SCHEMA))
.build();
Miré a arroyos y lambdas pero nunca trabajé con ellos y no estoy seguro de si estas podrían ser una solución para este caso. No puedo interrumpir los métodos. Todos ellos necesitan ser llamados en una fila. Es lo que estoy tratando de hacer aún posible y si es así, ¿cómo?
Gracias
EDIT: Esto es lo que he intentado, pero no funcionó:
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;
}
Esto funciona perfectamente bien, pero no se ajusta a mis necesidades:
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
}
String[] values = {"NAME", "SURNAME", "CITY", "FIELD4", "FIELD5", .....};
SchemaBuilder builder = SchemaBuilder.struct();
for (int i = 0; i < values.length; i++) {
builder = builder.field(values[i], Schema.STRING_SCHEMA)
}
Schema people = builder.build();
cómo combate algo por el estilo?