• getDeclaredConstructor(s)|Method(s)|Field(s)获取对应对象
    • getContructor(s)|Method(s)|Fidld(s) 只能获取public对象
    • 访问非作用域内构造方法、方法、成员变量、会抛出异常
    1. package com.qdxiaobu.reflect;
    2. import com.qdxiaobu.reflect.entity.Employee;
    3. import java.lang.reflect.Constructor;
    4. import java.lang.reflect.Field;
    5. import java.lang.reflect.InvocationTargetException;
    6. import java.lang.reflect.Method;
    7. import java.util.Locale;
    8. public class getDeclaredSample {
    9. public static void main(String[] args) {
    10. // 获取对象所有成员变量值
    11. try {
    12. Class employeeClass = Class.forName("com.qdxiaobu.reflect.entity.Employee");
    13. Constructor constructor =
    14. employeeClass.getConstructor(
    15. new Class[] {Integer.class, String.class, Float.class, String.class});
    16. Employee em = (Employee) constructor.newInstance(new Object[] {100, "gaoi", 12f, "研发部"});
    17. Field[] Fields = employeeClass.getDeclaredFields();
    18. for (Field Field : Fields) {
    19. System.out.println(Field.getName());
    20. if (Field.getModifiers() == 1) { // public 修饰
    21. Object val = Field.get(em);
    22. System.out.println(Field.getName() + ":" + val);
    23. }else if (Field.getModifiers() == 2){
    24. String methodName = "get" + Field.getName().substring(0, 1).toUpperCase() + Field.getName().substring(1);
    25. Method method = employeeClass.getMethod(methodName);
    26. Object invoke = method.invoke(em);
    27. System.out.println(Field.getName()+":"+invoke);
    28. }
    29. }
    30. } catch (ClassNotFoundException e) {
    31. e.printStackTrace();
    32. } catch (NoSuchMethodException e) {
    33. e.printStackTrace();
    34. } catch (InstantiationException e) {
    35. e.printStackTrace();
    36. } catch (IllegalAccessException e) {
    37. e.printStackTrace();
    38. } catch (InvocationTargetException e) {
    39. e.printStackTrace();
    40. }
    41. }
    42. }