Java中的反射技术

来源:互联网 发布:怎么弄淘宝优惠券 编辑:程序博客网 时间:2024/06/05 16:34

直接上代码,有java基础的应该能看懂
2017年12月16日 21:03:33

package cn.reflect;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;import org.junit.Test;import cn.entity.Admin;/** * 反射技术 * @author 朱宏梁 * */public class reflect {    @Test    public void test() throws Exception{        String className = "cn.entity.Admin";        //获取字节码文件        Class<?> clazz = Class.forName(className);        //创建对象 :通过默认的简化方法        //Admin a = (Admin) clazz.newInstance();   //Admin.Admin()        //通过构造器        /*Constructor<?> constrs = clazz.getDeclaredConstructor();        constrs.newInstance();  //Admin.Admin()*/              Constructor<?> construs = clazz.getDeclaredConstructor(String.class);        Admin a= (Admin) construs.newInstance("zhuhongliang"); //Admin.Admin()zhuhongliang    }    //获取方法    @Test    public void testField() throws Exception{        String className = "cn.entity.Admin";        //获取字节码文件        Class<?> clazz = Class.forName(className);        Admin a = (Admin) clazz.newInstance();        Field[] fields = clazz.getDeclaredFields();        for(Field fs : fields){            fs.setAccessible(true); //设置强制访问            String name = fs.getName();            Object value = fs.get(a);            System.out.println(name+"="+value);        }    }    //获取方法    @Test    public void testMethod() throws Exception{        String className = "cn.entity.Admin";        //获取字节码文件        Class<?> clazz = Class.forName(className);        Admin admin = (Admin) clazz.newInstance();        //获取方法getId        Method m = clazz.getDeclaredMethod("getId");        Object value = m.invoke(admin);        System.out.println(value);    }}