通过java反射得到javabean的属性名称和值参考
通过java反射得到javabean的属性名称和值
Field fields[]=cHis.getClass().getDeclaredFields();//cHis 是实体类名称 String[] name=newString[fields.length];
Object[] value=newObject[fields.length];try{
Field.setAccessible(fields,true);for (int i = 0; i < name.length; i++) {
name[i]=fields[i].getName();
System.out.println(name[i]+ "-> ");
value[i]= fields[i].get(cHis);//cHis 是实体类名称 System.out.println(value[i]);
}
}catch(Exception e) {
e.printStackTrace();
}
通过反射获取类属性字段 以及 调用类方法 以下方法未测试应该可以public classModelClassHelper {public static HashMap<String,Class>init(String classPath)
{try{//"com.geocompass.model.STSTBPRPModel" HashMap<String,Class> fieldHashMap=new HashMap<String,Class>();
Class cls= Class.forName(classPath); //com.geocompass.model.STSTBPRPModel Field[] fieldlist =cls.getDeclaredFields();for (int i = 0; i < fieldlist.length; i++) {
Field fld=fieldlist[i];
fieldHashMap.put(fld.getName(), fld.getType());//System.out.println("name = " + fld.getName());//System.out.println("decl class = " + fld.getDeclaringClass());//System.out.println("type = " + fld.getType());//System.out.println("-----"); }returnfieldHashMap;
}catch(ClassNotFoundException e) {//TODO Auto-generated catch block e.printStackTrace();
}return null;
}public staticString getTableName(String classPath)
{try{
Class cls=Class.forName(classPath);
Method test=cls.getDeclaredMethod("getTableName");
Object invoke=test.invoke(cls.newInstance());returninvoke.toString();//cls.asSubclass(TabModel.class); } catch(ClassNotFoundException e) {//TODO Auto-generated catch block e.printStackTrace();
}catch(SecurityException e) {//TODO Auto-generated catch block e.printStackTrace();
}catch(NoSuchMethodException e) {//TODO Auto-generated catch block e.printStackTrace();
}catch(IllegalArgumentException e) {//TODO Auto-generated catch block e.printStackTrace();
}catch(IllegalAccessException e) {//TODO Auto-generated catch block e.printStackTrace();
}catch(InvocationTargetException e) {//TODO Auto-generated catch block e.printStackTrace();
}catch(InstantiationException e) {//TODO Auto-generated catch block e.printStackTrace();
}return "";
}}
利用反射技术动态获取任意Java类实例的属性值packageorg.apache.easframework.core.entity.impl;importjava.lang.reflect.Field;public classTestEntity {privateString code;privateString name;public voidsetCode(String code)
{this.code =code;
}publicString getCode()
{return this.code;
}public voidsetName(String name)
{this.name =name;
}publicString getName()
{return this.name;
}public static void main(String[] args) throwsSecurityException, ClassNotFoundException, IllegalArgumentException, IllegalAccessException
{
TestEntity obj= newTestEntity();
obj.setName("name value");
obj.setCode("code value");
Field[] fds=Class.forName
("org.apache.easframework.core.entity.impl.TestEntity").getDeclaredFields();
System.out.println(fds.length);for(int i=0;i<fds.length;i++)
{
System.out.println(fds[i].get(obj));
}
}
}