Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java从属性名获取getter/setter名称_Java_Api_Getter_Setter - Fatal编程技术网

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的方法一致。源代码在这里,但它是一个漫长的阅读,可能不值得!