【问题标题】:Java Lambda Expression to UpperCase string value within an ObjectJava Lambda 表达式到对象内的大写字符串值
【发布时间】: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 不是静态的,没有它们的对象声明就不能引用。

【问题讨论】:

    标签: java lambda


    【解决方案1】:

    您可以将convertToUpper 设为通用方法:

    public static final <T> void convertToUpper(T object1, Function<? super T, String> getter,
            BiConsumer<? super T, String> setter) {
        setter.accept(object1, toUpperCase.apply(getter.apply(object1)).toString());
    }
    

    您可以传入任何对象,getter 和 setter,只要该 getter 和 setter 可以应用于该类型的对象。

    【讨论】:

    • @DevelopingDeveloper 你是什么意思?
    • 我的误解。
    猜你喜欢
    • 2016-06-23
    • 2022-01-20
    • 2016-05-27
    • 1970-01-01
    • 2018-06-24
    • 1970-01-01
    • 1970-01-01
    • 2016-04-13
    • 1970-01-01
    相关资源
    最近更新 更多