Java 反射机制

来源:互联网 发布:淘宝网广场舞高帮鞋 编辑:程序博客网 时间:2024/05/22 14:17

http://blog.csdn.net/justinavril/article/details/2873664

这篇博客中有比较简单的讲解,很适合初学者。

package wuxuzhao;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;public class TestForThread {/** * @param args * @throws ClassNotFoundException  * @throws NoSuchMethodException  * @throws SecurityException  * @throws InvocationTargetException  * @throws IllegalAccessException  * @throws IllegalArgumentException  */public static synchronized void main(String[] args) throws ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {// TODO Auto-generated method stub//列出类中声明的方法  Class c = Class.forName("java.lang.String");         Method m[] = c.getDeclaredMethods();                      for (int i = 0; i < m.length; i++)          System.out.println(m[i].toString());              //判断是否是类的实例对象      Class cl = Class.forName("wuxuzhao.TestForThread");            boolean b1 = cl.isInstance(new TestForThread());            System.out.println(b1);          //调用函数          Class cls = Class.forName("wuxuzhao.TestForThread");            Class partypes[] = new Class[2];            partypes[0] = Integer.TYPE;            partypes[1] = Integer.TYPE;                   Method meth = cls.getMethod("add", partypes);            TestForThread methobj = new TestForThread();            Object arglist[] = new Object[2];            arglist[0] = new Integer(37);            arglist[1] = new Integer(47);            Object retobj = meth.invoke(methobj, arglist);            Integer retval = (Integer) retobj;            System.out.println(retval.intValue());  }public int add(int a, int b) {        return a + b;     }  }