【发布时间】:2019-01-21 16:48:37
【问题描述】:
假设我有带有不同类型的 getter 和 setter 的 POJO。我想编写一些通用算法,仅基于通过 lambda 定义 getter 和 setter 来将数据从一个更新到另一个。 我正在尝试以这种方式创建它
private static final Map<Function<Entity, Object>, BiConsumer<Entity, Object>> ACCESSORS = new HashMap
<Function<Entity, Object>, BiConsumer<Entity, Object>>() {{
put(Entity::getAreaCode, Entity::setAreaCode);
}});
然后我遍历所有将目标实体应用于它们的条目,如果 getter 的结果不为空,那么我想为其他实体应用相应的 setter。
但它不起作用,因为 Object 不能转换为 String。而且我想将它用于不同的类型,不仅是字符串,还有整数等......
是否可以通过一些简单的方法解决,而无需创建特殊的转换器并将其与每个条目相关联?
【问题讨论】:
-
将
Object替换为?。这行得通吗? -
@Sweeper 没有。关于不可将对象转换为整数/字符串的相同错误...
标签: java generics lambda java-8 method-reference