代码如下
package com.loubin;import java.lang.annotation.*; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method;public class Main {public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {User user = new User("张三", 18);Class c = user.getClass();System.out.println("获取名字---------------------------");Field field = c.getDeclaredField("name");String name = (String) field.get(user);System.out.println(name);System.out.println("修改名字----------------------------");field.set(user, "李四");String name2 = user.getName();System.out.println(name2);System.out.println("调用方法——---------------------------");Method method = c.getDeclaredMethod("shout", String.class);method.invoke(user, "李白"); // Class c = User.class; // String name = c.getName(); // System.out.println(name); // System.out.println("获取所有属性-------------------------------"); // Field[] fields = c.getDeclaredFields(); // for (Field field : fields) { // System.out.println(field.getName()); // } // System.out.println("获取指定属性-----------------------------------"); // Field field = c.getDeclaredField("name"); // System.out.println(field.getName()); // System.out.println("获取所有方法----------------------------------"); // Method[] methods = c.getDeclaredMethods(); // for (Method method : methods) { // System.out.println(method.getName()); // } // System.out.println("获取指定方法----------------------------------"); // Method method = c.getDeclaredMethod("getName"); // System.out.println(method.getName()); // System.out.println("获取无参构造器------------------------------------"); // Constructor constructor = c.getDeclaredConstructor(); // System.out.println(constructor.getName()); // System.out.println("获取有参构造器-----------------------------------"); // Constructor constructor1 = c.getDeclaredConstructor(String.class, int.class); } }class User{String name;int age;public User() {}public User(String name, int age) {this.name = name;this.age = age;}public void shout(String name){System.out.println("是谁叫了一下" + name);}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}}
测试结果如下