- getDeclaredConstructor(s)|Method(s)|Field(s)获取对应对象
- getContructor(s)|Method(s)|Fidld(s) 只能获取public对象
- 访问非作用域内构造方法、方法、成员变量、会抛出异常
package com.qdxiaobu.reflect;
import com.qdxiaobu.reflect.entity.Employee;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Locale;
public class getDeclaredSample {
public static void main(String[] args) {
// 获取对象所有成员变量值
try {
Class employeeClass = Class.forName("com.qdxiaobu.reflect.entity.Employee");
Constructor constructor =
employeeClass.getConstructor(
new Class[] {Integer.class, String.class, Float.class, String.class});
Employee em = (Employee) constructor.newInstance(new Object[] {100, "gaoi", 12f, "研发部"});
Field[] Fields = employeeClass.getDeclaredFields();
for (Field Field : Fields) {
System.out.println(Field.getName());
if (Field.getModifiers() == 1) { // public 修饰
Object val = Field.get(em);
System.out.println(Field.getName() + ":" + val);
}else if (Field.getModifiers() == 2){
String methodName = "get" + Field.getName().substring(0, 1).toUpperCase() + Field.getName().substring(1);
Method method = employeeClass.getMethod(methodName);
Object invoke = method.invoke(em);
System.out.println(Field.getName()+":"+invoke);
}
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}