( , Java 8) myObject String. , .
private static List<Consumer<Tuple<SomeObject, String>> consumers = Arrays.asList(
new Consumer<>() {
public void consume(Tuple<SomeObject, String> tuple) {
tuple._1.setLine1(tuple._2);
}
},
new Consumer<>() {
public void consume(Tuple<SomeObject, String> tuple) {
tuple._1.setLine2(tuple._2);
}
},
... and so on
);
final int numConsumers = consumers.size();
for(int i=0; i < numConsumers && i < lines.size(); i++){
String line = lines.get(i);
if(!StringUtils.isBlank(line)){
consumers.get(i).consume(new Tuple<>(myObject, line));
}
}
, Tuple -
public class Tuple<A, B> {
public final A _1;
public final B _2;
public Tuple(A a, B a) {
this._1 = a;
this._2 = b;
}
}
Java 8, :
private static final List<BiConsumer<MyObject, String>> CONSUMERS = Arrays.asList(
(o, s) -> o.setLine1(s),
(o, s) -> o.setLine2(s),
(o, s) -> o.setLine3(s)
);
Tuple:
consumers.get(i).consume(myObject, line);
:
public class ExampleClass {
private static final List<BiConsumer<MyObject, String>> CONSUMERS = Arrays.asList(
(o, s) -> o.setLine1(s),
(o, s) -> o.setLine2(s),
(o, s) -> o.setLine3(s)
// and so on
);
public void exampleMethod() {
SomeObject myObject = new SomeObject();
List<String> lines = Arrays.asList("Line 1", "Line 2", "Line 3", "Line 4", "Line 5", "Line 6");
for(int i = 0, numConsumers = consumers.size(), numLines = lines.size(); i < numConsumers && i < numLines; i++){
String line = lines.get(i);
if(!StringUtils.isBlank(line)){
consumers.get(i).consume(myObject, line);
}
}
}
}