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