您好,我在db中有一个以下字段:
String abcTitlename;
String abcTitlepage;
我想从实体中获取这些字段,但是我想使用不带'abc'前缀的内容。例子
我的字段是abcTittlename名称,但是我想获得这个标题名称。
我可以使用过滤器获取这些字段吗?我可以使用replaceAll方法吗?像这样:
stream = stream.map(e -> ((DbFields)e).setFieldname(((DbFields) e).getFieldname().replace("abc","")))
.filter(e -> ((DbFields) e).getIscomputed().equals(0));
return stream.map(e -> ((DbFields) e).getFieldname().toLowerCase(Locale.US)).collect(Collectors.toSet());
}
我有DbFields类,它具有getFieldName(),getFieldtype()与方法。
我得到一个
Error:(170, 29) java: incompatible types: inference variable R has incompatible bounds
upper bounds: java.lang.Object
lower bounds: void
错误。我究竟做错了什么? 请帮帮我..
答案 0 :(得分:0)
操作后返回对象
stream = stream.map(e -> {
((DbFields)e).setFieldname(((DbFields) e).getFieldname().replace("abc",""));
return e;
})
...
答案 1 :(得分:0)
您可能希望将.map替换为.peek,因为您没有映射到其他对象。您只是在更新同一对象。
在第二次地图调用中,您没有更新字段名称。
答案 2 :(得分:0)
您可以使用开头的类型转换进行单独的map
调用,因此所有这些强制类型转换都不会污染您的代码。
下面是示例,使用建议的peek
方法重写
return stream.map(e -> (DbFields)e)
.filter(e -> e.getIscomputed().equals(0))
.peek(e -> e.setFieldname(e.getFieldname().replace("abc", "")))
.map(e -> e.getFieldname().toLowerCase(Locale.US))
.collect(Collectors.toSet());