反射 demo

来源:互联网 发布:上汽 知乎 编辑:程序博客网 时间:2024/06/09 18:42
反射
1 获取类对象
2 根据类对象创建一个对象
3 访问属性
4 调用方法

获取类对象的三种方法
 1 Class.forName()
 2 Object.class   //类的静态属性不会被初始化
 3 Object.getClass()

package test;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 InstantiationException, IllegalAccessException, ClassNotFoundException, NoSuchMethodException, SecurityException, IllegalArgumentException, InvocationTargetException, NoSuchFieldException {// TODO 自动生成的方法存根String className = "test.dog";Class cla1 = Class.forName(className); //xxx.xx  包名。类名Class cla2 = new dog().getClass();Class cla3 = dog.class;dog dd = (dog) cla1.newInstance();   //通过反射的方法创建对象System.out.println("********************常规方法调用更改对象属性****************");dd.age = 10;System.out.println(dd.age);System.out.println("********************反射方法更改对象属性****************");Field f = dd.getClass().getDeclaredField("age");f.set(dd, 20); System.out.println(dd.age);System.out.println("********************常规方法调用对象的方法****************");dd.shout("aaa");System.out.println("********************通过反射方法来调用对象的方法***************");Method m = dd.getClass().getMethod("shout",String.class);m.invoke(dd,"aaa");System.out.println("ok");}}

原创粉丝点击