已经有很多java反射机制的文章,我今天就来写写我自己对java反射机制的理解吧,毕竟我们以后学到Spring什么的都是要用到的。
首先是定义:
java的反射机制是作用于程序运行时候的,在程序运行时期,我们无法在用new来创建对象,这时候就可以利用java的反射机制来获取某个类的字节码对象(class),然后通过字节码来创建对象。
获取字节码对象的方式有三种:
1.通过创建对象,再获取字节码对象
Person p=new Person(); Class class1 = p.getClass();
2.直接通过类来获取字节码对象
Class c=Person.class;
3.通过获取类全名来获取字节码对象
Class c=Class.forName("com.test.reflect.Person");
反射机制主要用的是第三种Class创建方法。
一般可以通过下列代码来创建对象
package com.test.reflect; import java.lang.reflect.Method; public class test { public static void main(String[] args) throws InstantiationException, IllegalAccessException { try { Class c=Class.forName("com.test.reflect.Person"); Method method = c.getMethod("eat",null ); method.invoke(c, null); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
结果: