问题描述
我有这样的东西:
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