源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Java反射机制的实现详解

  • 时间:2020-04-20 15:03 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Java反射机制的实现详解
很多主流框架都使用了反射技术.像ssh框架都采用两种技术 xml做配置文件+反射技术. [b]与反射有关的类包.[/b] java.lang.reflect.*;和java.lang.Class; Java中所有类型(包括基本类型)都对应一个Class对象,这个Class就是java.lang.Class。即每一个类型,在Class中都有一个Class对象跟它对应.Class 没有公共构造方法。注意不是没有,是没有公共的. [b]如何获得Class对象 [/b]
DennisIT@163.com 代码如下:
package org.dennisit.reflect.main; import java.lang.reflect.Field; /**  *  *  ReflectEx.java     *  *  @version : 1.1  *   *  @author  : 苏若年    <a href="mailto:DennisIT@163.com">发送邮件</a>  *     *  @since     : 1.0        创建时间:    2013-2-26        下午01:46:00  *      *  TODO     :    class ReflectEx.java is used for ...  *  */ public class ReflectEx {     public static void main(String[] args)throws Exception {         Class cls = Class.forName("org.dennisit.reflect.entity.User");         Object obj = cls.newInstance();       //创建User的对象         Field f = cls.getDeclaredField("test");    //获取test属性         f.setAccessible(true);                    //打开私有属性test的访问权限         f.set(obj, "zhangsan");                    //为test重新复制         System.out.println(f.get(obj));            //获取obj的test属性值         //根据方法名execute获取方法         java.lang.reflect.Method m = cls.getMethod("execute", String.class, int.class);         m.invoke(obj, "dennisit",23);            //调用execute方法     } }
运行效果
DennisIT@163.com 代码如下:
package org.dennisit.reflect.entity; import java.io.Serializable; /**  *  *  User.java     *  *  @version : 1.1  *   *  @author  : 苏若年    <a href="mailto:DennisIT@163.com">发送邮件</a>  *     *  @since     : 1.0        创建时间:    2013-2-26        下午01:43:56  *      *  TODO     :    实体类  *  */ public class User implements Serializable{     private String name;     private int age;     private String email;     public User() {  //必须有无参构造     }     //getter() and setter()    }
主测试类
DennisIT@163.com 代码如下:
dennisit,22,dennisit@163.com
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部