java 反射
package com.howhy.demo; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.sql.SQLOutput; import java.util.*; import java.util.function.Consumer; import java.util.function.Supplier; import java.util.stream.Stream; public class Demo1 { public static void main(String[] args) { Class person = Person.class; Field[] fields = person.getFields();//获取public修饰的成员变量 for (Field f : fields) { System.out.println(f); } Field[] declaredFields = person.getDeclaredFields();//获取所有的成员变量与修饰符无关 for (Field f : declaredFields) { System.out.println(f); } try { System.out.println(person.getField("name")); Field ff = person.getDeclaredField("name");// Field ff = person.getDeclaredField("name") ; ff.setAccessible(true); //private 若不加此句会报错无法get set Person p=new Person(); Object obj=ff.get(p);//get方法 ff.set(p,"eeee");//set方法 System.out.println(ff.get(p)); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { e.printStackTrace(); } Object aa = null; try { Constructor constructor = person.getConstructor(String.class, Integer.class); aa = constructor.newInstance("aa", 23); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } System.out.println(aa); Method say = null; try { say = person.getMethod("say"); Person ccc = new Person("ccc", 23); say.invoke(ccc); say = person.getMethod("say",String.class); say.invoke(ccc,"44444"); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } } }