package reflect;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
public class Entity extends EntityFather {
privateString name;
privateString age;
privateString sex;
publicString getName() {
return name;
}
publicvoid setName(String name) {
this.name = name;
}
publicString getAge() {
return age;
}
publicvoid setAge(String age) {
this.age = age;
}
publicString getSex() {
return sex;
}
publicvoid setSex(String sex) {
this.sex = sex;
}
publicstatic 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());
}
}
publicstatic String getStr(String str) {
System.out.println("调用返回值:" + str);
return str;
}
/////////////////
publicstatic 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, newClass[]{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");
//