Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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 数一数二_Java - Fatal编程技术网

Java 数一数二

Java 数一数二,java,Java,我正在从事一个项目,该项目需要计算已编译java代码中getter和setter的数量。我是新手,不知道从哪里开始,怎么开始。 我已经安装了eclipse并添加了字节码插件来查看java代码的字节码 关于下一步需要做什么有什么想法吗?请参考Apache字节码操作库。 字节码工程库旨在为用户提供一种方便的方法来分析、创建和操作(二进制)Java类文件(以.class结尾的文件) 之后,您可以使用反射获得如下计数: public static int getGetterMethodCount(Cla

我正在从事一个项目,该项目需要计算已编译java代码中getter和setter的数量。我是新手,不知道从哪里开始,怎么开始。 我已经安装了eclipse并添加了字节码插件来查看java代码的字节码


关于下一步需要做什么有什么想法吗?

请参考Apache字节码操作库。 字节码工程库旨在为用户提供一种方便的方法来分析、创建和操作(二进制)Java类文件(以.class结尾的文件)

之后,您可以使用反射获得如下计数:

public static int getGetterMethodCount(Class<?> cls) {
    int n = 0;
    for (Method m : cls.getMethods()) {
        // To identify the boolean setter "is" is used
        if (m.getName().startsWith("get") || m.getName().startsWith("is")) {
            n++;
        }
    }
    return n;
}

public static int getSetterMethodCount(Class<?> cls) {
    int n = 0;
    for (Method m : cls.getMethods()) {
        if (m.getName().startsWith("set")) {
            n++;
        }
    }
    return n;
}
publicstaticintgettermethodcount(类cls){
int n=0;
对于(方法m:cls.getMethods()){
//要识别布尔设置器,请使用“is”
if(m.getName().startsWith(“get”)| | m.getName().startsWith(“is”)){
n++;
}
}
返回n;
}
公共静态int getSetterMethodCount(类cls){
int n=0;
对于(方法m:cls.getMethods()){
if(m.getName().startsWith(“set”)){
n++;
}
}
返回n;
}

您可以使用
java.lang.reflect.*
包获取所有类信息,如变量、方法、构造函数和内部类

例如:

public int noOfGettersOf(Class clazz) {
    int noOfGetters = 0;
    Method[] methods = clazz.getDeclaredMethods()
    for(Method method : methods) {
        String methodName = method.getName();
        if(methodName.startsWith("get") || methodName.startsWith("is")) {
            noOfGetters++;
        }
    }
    return noOfGetters;
}

遵循设置者的相同方法,你需要考虑的是布尔吸收器,它们通常从<代码>开始是而不是<代码>获取< /代码> .< /p> ,你可以使用这样的东西

public static int countGets(Class<?> cls) {
  int c = 0;
  for (java.lang.reflect.Method m : cls.getMethods()) {
    if (m.getName().startsWith("get")) {
      c++;
    }
  }
  return c;
}

public static int countSets(Class<?> cls) {
  int c = 0;
  for (java.lang.reflect.Method m : cls.getMethods()) {
    if (m.getName().startsWith("set")) {
      c++;
    }
  }
  return c;
}
公共静态int countget(类cls){
int c=0;
for(java.lang.reflect.Method m:cls.getMethods()){
if(m.getName().startsWith(“get”)){
C++;
}
}
返回c;
}
公共静态整数计数集(cls类){
int c=0;
for(java.lang.reflect.Method m:cls.getMethods()){
if(m.getName().startsWith(“set”)){
C++;
}
}
返回c;
}

这里如何关联
Java
Assembly
标记?您需要使用反射。你尝试过什么?+1用于反射。你必须决定什么是getter。您的类是否遵循JavaBean约定?使用ASM计算getfield/putfield指令的数量,这可能吗?您在问什么?