java从属性名获取getter/setter名称
我有一些是这样的:java从属性名获取getter/setter名称,java,api,getter,setter,Java,Api,Getter,Setter,我有一些是这样的: String getterName = "get"+StringUtils.capitalize(propertyName); Method methodLabel = item.getClass().getMethod(getterName); 我知道这并不总是有效的,因为像:“X”“X”等属性。。。是不同的规则 JAVA API中是否有将name属性传递给getter/setter name的方法 我不想使用:PropertyDescriptor。它
String getterName = "get"+StringUtils.capitalize(propertyName);
Method methodLabel = item.getClass().getMethod(getterName);
我知道这并不总是有效的,因为像:“X”“X”等属性。。。是不同的规则
JAVA API中是否有将name属性传递给getter/setter name的方法
我不想使用: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
我同意Stultuske的上述评论。但是,看看java.beans.Introspector()——这是java从getter/setter获取属性名的标准方法,也就是说,从另一种方法获取属性名。从name属性获取name约定getter的解决方案在api中的什么位置?它只获取给定了一个带有get。。。和/或设置。。。方法。我的意思是:如果您的代码是从属性名生成方法名,那么最好您的代码与Javabeans的方法一致。源代码在这里,但它是一个漫长的阅读,可能不值得!