问题
需求
- 我有一个实体 充血模型 Entity
- 想要实现 fieldList ( 根据字段名获取list上的数据 )
class Entity {
List list
// 根据字段名获取list上的数据
public List fieldList () {}
}
演示
Entity entity = new Entity();
List list = [{id:11, name:12}, {id:21, name: 22} , { id: 31, name:32}]
entity.setList(list);
// 第一种
entity.fieldList("id") // [11,21,31]
// 第二种 如何实现
entity.fieldList(Entity::getId) // [11,21,31]
现状
- Entity.java
- 实际使用 报错
你这个我在mybatisplus中见过,你可以看一下mybatisplus中的com.baomidou.mybatisplus.core.toolkit.LambdaUtils#extract
正常getId的lambda方法应该是java.util.function.Function的字类,
现在要改成com.baomidou.mybatisplus.core.toolkit.support.SFunction,这个实现了Serializable,这样会有隐藏的writeReplace方法,writeReplace里能拿到这个lambda对应方法的名称
这样你就能根据lambda方法获取字段名称。