我需要一个泛型方法来为泛型类的属性赋值;我将举一个例子来更好地解释。我想我需要的方法应该是这样的:
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&#39;使用NOT STATIC方法&#39; setColor()&#39;。 我的通用方法应该返回Car的等值,让我们说'myCar&#39;,然后分配值&#34; red&#34;在属性&#39;颜色&#39;
myCar.setColor("red");
我的泛型方法可以用类似的东西调用:
Car myCar= (Car) Utilities.assignValueToAttribute(myCar, oggetto -> oggetto.setColor(), "red");
问题:我不太了解该方法的代码......
答案 0 :(得分:2)
你很亲密。您需要两种泛型类型:对象(bean)的类型和值的类型。你想要一个BiConsumer,而不是一个函数,因为set-method不返回任何东西。
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
毫无意义。它与方法调用之前的对象相同。