根据属性值创建动态字符串



我有application.properties:

test.md5.params=something1,something4

在我的java类我得到这个特殊的值:并且需要创建与属性文件中相同的字符串,例如

public String calculate(RequestClass request)
{
List<String> params= //I am getting the values from application.prop  
**(above part id done)**

我的问题如下:现在我的参数列表中有[something1,something4]所以我需要像下面这样连接两个字符串值:

String finalString=request.getSomething1()+request.getSomething4();
return finalString;
}

我的问题是如何动态地做到这一点,在我的属性文件中,我可能会收到"n"有价值的东西。注意:我需要使代码使我的类保持不变,如果将来我在属性文件中添加10个以上的值,我的最终字符串应该返回像

String finalString=request.getSomething1()+request.getSomething4()+....all the values.;

通过反射这是可能的,下面是一个实现。

public String calculate(RequestClass request) throws InvocationTargetException, IllegalAccessException {
List<String> params = Arrays.asList("something1", "something4");
// Do your logic to get the method Names from params, below is an simple example - paramsUpdated
List<String> paramsUpdated = Arrays.asList("getSomething1", "getSomething4");
// Reflection to get the methods of request class
Method[] methods = request.getClass().getMethods();
StringBuilder sb = new StringBuilder();
for (String param : paramsUpdated) {
for (Method method : methods) {
if (param.equals(method.getName())) { 
sb.append(method.invoke(request));
}
}
}
return sb.toString();
}

最新更新