【发布时间】:2017-04-27 22:08:49
【问题描述】:
我有一个 lambda 表达式,其中我使用 UnaryOperator 将字符串值转换为大写,如果不是 null:
public static final UnaryOperator toUpperCase
= (str -> str == null ? str : str.toString().toUpperCase());
然后我在方法中使用此运算符并传入对象、getter 和 setter。使用这些参数,我可以获取对象(字符串),将字符串大写,然后将字符串设置为值:
public static final void convertToUpper(Object1 object1, Function<Object1, String> getter,
BiConsumer<Object1, String> setter) {
setter.accept(object1, toUpperCase.apply(getter.apply(object1)).toString());
}
但是,对于我希望进行此转换的每个对象,我必须创建另一个具有不同对象参数的 convertToUpper 方法。有没有办法让这个方法更通用并允许传入任何对象、getter 和 setter。我遇到的问题是 getter/setter 不是静态的,没有它们的对象声明就不能引用。
【问题讨论】: