public <T> SFunction<T, ?> getterFunction(Class<T> clazz, String field) {
Method[] methods = clazz.getMethods();
Method targetMethod = null;
for (Method method : methods) {
if (field.startsWith("is") && StringUtils.equals(method.getName(), field)) {
targetMethod = method;
break;
} else if (StringUtils.equalsIgnoreCase(method.getName(), "get" + field)) {
targetMethod = method;
break;
}
}
Class<?> returnType = targetMethod.getReturnType();
// 创建一个Function,该方法通过反射调用上述方法
Method finalTargetMethod = targetMethod;
SFunction<T, ?> function = input -> {
try {
return finalTargetMethod.invoke(input); // 注意:这里需要确保input是合适的类型,例如String类型对于length()方法。
} catch (Exception e) {
throw new RuntimeException(e);
}
};
return function;
}
java 根据类和字段名获取getter的Function
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 一、核心思路 核心思路是: 获取SerializedLambda类, 通过它获取方法名, 然后裁掉 set 和 g...
- https://blog.csdn.net/cicon/article/details/51577655 获取表名...
- 这里用到的api是DatabaseMetaData,接口文档地址:https://docs.oracle.com/...
- 概念 Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个...