注解反射之通过Class对象来操作对象的属性和方法
代码如下
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; } }
测试结果如下


浙公网安备 33010602011771号