gpt4 book ai didi

java - 为泛型类的泛型方法的属性赋值 - Java

转载 作者:行者123 更新时间:2023-11-30 02:18:51 24 4
gpt4 key购买 nike

我需要一个通用方法来为通用类的属性赋值;我将举一个例子来更好地解释。我想我需要的方法应该是这样的:

import java.util.function.Function;
public class Utilities {

public static <T> Object assignValueToAttribute( Object MY_Object__Arg, Function<T, ?> MY_AttributeValueExtractor_Arg, Object MY_AttributeValueToEqual_Arg) {
return ....
}

}

示例:

假设我有一个名为“Car”的类,具有非静态方法“setColor()”。我的通用方法应该返回 Car 的实例,比如说“myCar”,并在属性“color”处分配值“red”

myCar.setColor("red"); 

我的通用方法可以用类似的方法调用:

Car myCar= (Car) Utilities.assignValueToAttribute(myCar, oggetto -> oggetto.setColor(), "red");

问题:我不知道如何编写该方法......

最佳答案

你很接近。您需要两种泛型类型:对象(bean)的类型和值的类型。你想要一个BiConsumer ,不是函数,因为设置方法不返回任何内容。

public static <T, V> T assignValueToAttribute(T obj, BiConsumer<T, V> attributeSetter, V value) {
attributeSetter.accept(obj, value);
return obj;
}

然后您可以将其调用为:

assignValueToAttribute(myCar, Car::setColor, "red");

请注意,重新分配 myCar 是没有意义的。它与方法调用之前的对象相同。

关于java - 为泛型类的泛型方法的属性赋值 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47461754/

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