package reflect;
import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.Modifier;
public class Entity extends EntityFather {
private String name; private String age; private String sex;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getAge() { return age; }
public void setAge(String age) { this.age = age; }
public String getSex() { return sex; }
public void setSex(String sex) { this.sex = sex; }
public static void save_Entity(Object obj) {
try { // Class c1 = obj.getClass();//设置新值 // Field field = c1.getDeclaredField("name"); // field.set(obj, "new Young"); // Class1 cl1 = new Class1(); // Class cl2 = Class1.class; // Class1 cl3 =cl1.getClass(); // Class cl4=Class.forName(package.class); String attr; String val; int modifer; String modiferName;
Class c = obj.getClass(); Field[] fs = c.getDeclaredFields(); for (Field f : fs) { modifer = f.getModifiers(); modiferName = Modifier.toString(modifer); attr = f.getName(); //属性名 顺序按照POJO类中的private属性顺序 val = (String) f.get(obj);//属性值 System.out.println("Modifier:" + modiferName + "\tAttr:" + attr + "\tVal:" + val); } } catch (Exception ex) { System.out.println(ex.getMessage()); } }
public static String getStr(String str) { System.out.println("调用返回值:" + str); return str; } /////////////////
public static void main(String[] args) { Entity entity = new Entity(); entity.setName("Young"); entity.setSex("男"); entity.setAge("25");
//new Entity().save_Entity(entity); Method[] ms = Entity.class.getDeclaredMethods(); String methodName; int modifier; String modifierName;
for (Method m : ms) { methodName = m.getName(); System.out.println(methodName); try { if (methodName.startsWith("save")) { m = Entity.class.getDeclaredMethod(methodName, new Class[]{Object.class});//声明方法参数类型 m.invoke(entity, entity);
modifier = m.getModifiers(); modifierName = Modifier.toString(modifier); System.out.println("Method Modifier:" + modifierName); //方法访问类型 System.out.println("Method return type:" + m.getReturnType().getName());//方法返回值类型 System.out.print("Params:"); for (Class cls : m.getParameterTypes()) { //方法属性值类型 System.out.print(cls.getName() + ","); } System.out.println(""); } else { // m = Entity.class.getMethod("getStr", String.class); // String s=(String)m.invoke(entity, "Invoke Msg"); //