在为我的问题找到解决方案时遇到问题。
我需要在struct()和build()方法之间调用field方法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();
我查看了Streams和lambda,但从未与它们合作,并且不确定是否可以解决这种情况。我无法中断这些方法。它们都需要在一行中被调用。 我正在尝试做的事情甚至可能吗?如果可以,怎么办?
谢谢
编辑: 这是我尝试过但没有起作用的方法:
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
}
答案 0 :(得分:3)
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();
如何回弹类似的东西?