我有一个返回列表的方法,如
public List<Object> getSomeData(SomeBean sb) {
List<Object> data = Lists.newArrayList();
data.add(sb.getId()); // Id->long
data.add(sb.getName()); // name->String
.....
return data;
}
现在我必须迭代这个列表,我必须每次都检查类型
for (int i = 0; i < data.size(); i++) {
if (data.get(i) instanceof String) {
//append
}
if (data.get(i) instanceof Long) {
//append
}
....
}
我需要在循环中追加list的元素。 他们有更好的方法来实现这一点,可能没有使用instanceof运算符。
答案 0 :(得分:3)
您应该为该数据创建一个类并返回它的实例,而不是List
。
class SomeEntity {
long id;
String name;
public SomeEntity(long id, String name) {
this.id = id;
this.name = name;
}
public long getId() {
return id;
}
public String getName() {
return name;
}
@Overrides
public String toString() {
return id + " " + name;
}
}
只需在代码中使用它:
public SomeEntity getSomeData(SomeBean sb) {
SomeEntity entity = new SomeEntity(sb.getId(), sb.getName());
return entity;
}
编辑:您可以覆盖该类的toString()
方法并在您的代码中使用它(上面添加)
答案 1 :(得分:0)
你走了:
final List<Object> someData = new ArrayList<>();
someData.add("stringValue"); //String
someData.add(1L); //Long Value
final String result = someData.stream()
.map(String::valueOf)
.collect(Collectors.joining(" "));
System.out.println(result);