java反射机制:
PS : JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,
都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
首先先介绍几个重要的方法:
1.getName() :
获取某个对象的全称;
2.forName() :
通过某个类的全称从而获取该类的对象;
ps:对象和实例大家都以为是一个概念。但是总是有点不同的,如
String str; //str为对象
String str = new String("abc");//此时就是实例了。以前有一 种说法叫对象
的实例化。现在没咋听说过了。不过我一直都这么理解的。希望能够让大家理
解的更为清楚
3. newInstance() :
通过对象调用该方法返回该类的实例化对象。
4. getMethod(methodName,args1,args2,,,,,,) :
由对象调用,获取该类的方法,第一个参数为该方法名,后面的为 该方法的
参数列表,返回值为Method。
5.invoke(Object,args1,args2,,,,,,) :
由上面4获取的方法调用。第一个参数为该方法所在的类的实例化对 象。后面
的为需要传入的参数。
6.getSuperClass() :
由对象调用,获取该类的父类的一个对象。
7.getClassLoader() :
有对象调用,获取该类所对应的类加载器
下面贴代码demo:
package reflectionTest; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; class bb{ bb(){ System.out.println("bb"); } public int getHehe(){ System.out.println("GetHehe"); return 1; } } public class reflection { public static void main(String[] args){ Class t =null; try { t = Class.forName("reflectionTest.bb"); Object o = null; o = t.newInstance(); Method m = null; m = t.getMethod("getHehe",String.class); m.invoke(o); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchMethodException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }