java从属性名称获取getter / setter名称

问题描述

我有这样的东西:

String getterName = "get"+StringUtils.capitalize(propertyName);
Method methodLabel = item.getClass().getMethod(getterName);

我知道这并不总是可行,因为诸如“ X”,“ x”等之类的属性是不同的规则。

¿JAVA API中是否有一种方法可以将name属性传递给getter / setter名称?

我不想使用:PropertyDescriptor。它需要同时使用setter和getter。

编辑:

这是我想要的:

String propertyName ="money";
String getterPropertyNameByConventionJava = ConvertPropertyNameToGetterName(propertyName);
System.out.println(getterPropertyNameByConventionJava);
//prints getMoney or getMoney() anyway.

解决方法

我已经制定了自己的解决方案,因为我看到没有正式的实现方式

public static void main(String[] args) throws Exception {
        System.out.println("get"+cuerpoGetterSetter("probando0"));
        System.out.println("get"+cuerpoGetterSetter("x"));
        System.out.println("get"+cuerpoGetterSetter("X"));
        System.out.println("get"+cuerpoGetterSetter("URL"));
        System.out.println("get"+cuerpoGetterSetter("xIndex"));
    }
    public static String cuerpoGetterSetter(String propiedad) {
        if (propiedad == null || propiedad.length() == 0) {
            return propiedad;
        }
        if (propiedad.length() == 1) {
            return propiedad.toUpperCase();
        }
        if (Character.isUpperCase(propiedad.charAt(0))) {
            return propiedad;
        }
        if (propiedad.length() > 1 && Character.isUpperCase(propiedad.charAt(1))) {
            return propiedad;
        }
        return propiedad.substring(0,1).toUpperCase() + propiedad.substring(1,propiedad.length());
    }

结果:

getProbando0
getX
getX
getURL
getxIndex

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...