使用Generic Type来实现相同的功能

AJN*_*AJN 8 java generics java-8

我有一个场景,其中两个函数完全相似,但两者中使用的Class对象不同,类似这样,

public int function1(inputObject input){
    LeadMaster lead= input.getLeadMaster();
    PropertyUtils.setProperty(lead, input.getKey(), input.getValue());
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

和其他功能一样,

public int function2(inputObject input){
    DealMaster deal= input.getDealMaster();
    PropertyUtils.setProperty(deal, input.getKey(), input.getValue());
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如何在上面的对象中使用泛型对象的泛型类?我还没有使用泛型.

Era*_*ran 6

如果希望您的方法使用inputObject该类的任何属性,您可以传递一个返回给定inputObject实例的必需属性的函数接口:

public <T> int function(inputObject input, Function<inputObject,T> func) {
    T obj = func.apply(input);
    PropertyUtils.setProperty(obj, input.getKey(), input.getValue());
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在你可以用这个方法调用

function(input,inputObject::getLeadMaster);
Run Code Online (Sandbox Code Playgroud)

要么

function(input,inputObject::getDealMaster);
Run Code Online (Sandbox Code Playgroud)