gpt4 book ai didi

对象中大写字符串值的 Java Lambda 表达式

转载 作者:行者123 更新时间:2023-11-30 10:31:02 25 4
gpt4 key购买 nike

我有一个 lambda 表达式,其中我使用 UnaryOperator 将字符串值转换为大写(如果不为空):

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 不是静态的,没有对象声明就不能引用。

最佳答案

您可以使 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 可以应用于该类型的对象即可。

关于对象中大写字符串值的 Java Lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43456657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com