反射获取接口跟指定注释的变量(二)

2014-11-24 08:59:11 · 作者: · 浏览: 1
名获取变量
annpro.add(ms[i].getName().substring(3).toLowerCase());
}
}
if (atrr.toString().equals(
StringValueProvider.Annotations_Value.ANNREF)) {
if (ms[i].getName().startsWith("set")) {
annref.add(ms[i].getName().substring(3).toLowerCase());
}
}
}
}
map.put(StringValueProvider.Annotations_Value.ANNPRO, annpro);
map.put(StringValueProvider.Annotations_Value.ANNREF, annref);
return map;
}
测试类
package com.sunsheen.ids.composite.test;
import java.util.List;
import java.util.Map;
import com.sunsheen.ids.composite.utils.ReflectUtil;
import com.sunsheen.ids.composite.utils.StringValueProvider;
import com.sunsheen.jfids.studio.javaassist.ClassPool;
import com.sunsheen.jfids.studio.javaassist.CtClass;
public class Test2 {
public static void main(String[] args) {
ClassPool pool = new ClassPool();
String projectPath = "E:\\developmentEnvironment\\runtime-EclipseApplication\\p2";
try {
pool.insertClassPath(projectPath + "\\WebRoot\\WEB-INF\\classes");
String packagePath = "resources/f1/m1/src/test/AmdManagerImpl.java";
packagePath = packagePath.substring(packagePath.indexOf("src")+4,
packagePath.length());
packagePath = packagePath.replace(".java", "");
packagePath = packagePath.replace("/", ".");
packagePath = packagePath.replace("\\", ".");
CtClass cc = pool.get(packagePath);
//通过注释获取变量
Map map = ReflectUtil.getAnnRefAndPro(cc);
List inter=ReflectUtil.getRefIner(cc);
for (int i = 0; i < inter.size(); i++) {
System.out.println("接口:" + inter.get(i));
}
List annpro = map.get(StringValueProvider.Annotations_Value.ANNPRO);
for (int i = 0; i < annpro.size(); i++) {
System.out.println("所有set方法包含@org.osoa.sca.annotations.Property注释的变量:" + annpro.get(i));
}
List annref = map.get(StringValueProvider.Annotations_Value.ANNREF);
for (int i = 0; i < annpro.size(); i++) {
System.out.println("所有set方法包含@org.osoa.sca.annotations.Reference注释的的变量:" + annpro.get(i));
}
} catch (Exception e) {
e.printStackTrace();
}
}