利用java反射机制进行对象操作 落日映苍穹つ 2022-09-18 08:00 199阅读 0赞 我们经常使用COMMONS-BEANUTILS包来进行bean的操作,例如从map到bean获从bean到map的映射,那么实现的原理是什么呢,下面举个简单的操作的例子;首先,我建立一个bean public class Bean \{ private String test1; private String getTest1() \{ return test1; \} private void setTest1(String test1) \{ this.test1 = test1; \} \} 上面这个例子比较极端,利用我们平常的JAVA操作是不可能通过这两个私有方法进行设置和获取值的,但是我们利用JAVA反射机制却可以非常方便的操作。 下面,我将全部利用JAVA的反射来进行对象的创建,以及对它的操作;这里我们假设这个Bean我们只能得到名称,例如,我们是从配置文件中得到的名称,公司的COMMAND框架中receiver的配置就是如此,配置了receiver的名称和要执行的方法,我们无论他是否是私有的还是共有的都可以访问。 public class TestClass \{ /\*\* \* @param args \* @throws ClassNotFoundException \* @throws NoSuchMethodException \* @throws SecurityException \* @throws InvocationTargetException \* @throws IllegalAccessException \* @throws IllegalArgumentException \* @throws InstantiationException \*/ public static void main(String\[\] args) throws ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException, InstantiationException \{ //1.0得到bean的Class对象 Class beanClass=Class.forName("org.test.t.Bean"); //2.0利用构造函数构造一个Bean对象 Constructor bc=beanClass.getConstructor(null); Bean b=(Bean) bc.newInstance(null); /\*\* \* 也可以这样构造 \* Bean b=Class.forName("org.test.t.Bean").newInstance(); \*/ //3.0通过getDeclaredMethod方法得到要执行的方法(public/protected/private/默认),要执行的方法的函数名字是第一个参数指定,第二个参数指定该函数带有的参数 //如果只需要得到公共成员方法,则直接调用getMethod方法 Method setMethod=beanClass. getDeclaredMethod("setTest1", new Class\[\]\{String.class\}); Method getMethod=beanClass. getDeclaredMethod("getTest1", null); //4.0 如果要访问私有的方法,所以我们在这里将可访问设置为true,则JVM不会执行访问控制检查;如果是共有方法则不需要设置 setMethod.setAccessible(true); //5.0用得到的方法对象在第2步中构造的对象中执行 setMethod.invoke(b, new Object\[\]\{"hello"\}); System.out.println(getMethod.isAccessible()); getMethod.setAccessible(true); System.out.println(getMethod.isAccessible()); System.out.println(getMethod.invoke(b, null)); \} \} 上面红色部分是获取所有public/private/protected/默认 方法的函数,如果只需要获取public方法,则可以调用getMethod. 上面粉红色的方法是将要执行的方法对象设置是否进行访问检查,也就是说对于public/private/protected/默认 我们是否能够访问。值为 true 则指示反射的对象在使用时应该取消 Java 语言访问检查。值为 false 则指示反射的对象应该实施 Java 语言访问检查。 如果是共有方法,当然不需要设置。
相关 Java反射机制详解:类和对象的动态操作 在Java编程中,反射(Reflection)是一种强大的机制,它允许程序在运行时检查类的信息、创建对象或者调用方法。 以下是Java反射机制的详细解析: 1. **Cla Myth丶恋晨/ 2024年09月11日 18:42/ 0 赞/ 9 阅读
相关 利用java反射机制进行对象操作 我们经常使用COMMONS-BEANUTILS包来进行bean的操作,例如从map到bean获从bean到map的映射,那么实现的原理是什么呢,下面举个简单的操作的例子;首先, 落日映苍穹つ/ 2022年09月18日 08:00/ 0 赞/ 200 阅读
相关 JAVA 利用反射机制查询数据库返回相应对象 public static void main(String [] rags){ SQLHepler SH=new SQLHepler(); S 傷城~/ 2022年08月25日 11:53/ 0 赞/ 133 阅读
相关 利用反射操作对象的成员和方法 之前写过的理论博客:[http://blog.csdn.net/u010892841/article/details/51596392][http_blog.csdn.net_ Love The Way You Lie/ 2022年07月17日 03:24/ 0 赞/ 139 阅读
相关 利用java反射机制对方法进行调用 今天研究了一下java的反射机制,在此做个笔记。 基本步骤:首先获取Class对象,然后用该对象获取方法。具体的就看代码吧。对照本文最后的结果,会更好的理解反射机制。 浅浅的花香味﹌/ 2022年07月12日 15:53/ 0 赞/ 190 阅读
相关 java使用反射机制进行对象间数据赋值获取 下面是使用的反射的utils 对象的私有属性和公有属性都可以获取到 getDeclaredFields package com.cn.fs; import java. 本是古典 何须时尚/ 2022年06月09日 03:56/ 0 赞/ 150 阅读
相关 通过java反射机制操作对象的属性方法 1. 获得对象的类属性(Class 类) 1. Class 类名.class 2. Class 对象名.getClass() 3. C 左手的ㄟ右手/ 2022年06月06日 09:06/ 0 赞/ 302 阅读
相关 利用Java反射机制对象属性名/属性值 直接上代码,不懂的地方可以去查看api //java反射机制获取对象所有属性,并拼接成字符串 public String splicingString(Object o) 悠悠/ 2022年05月28日 11:48/ 0 赞/ 221 阅读
相关 利用Java反射机制读取注解 java代码: package ORM; @SxtTable("tb_student") public class SxtStudent { 小咪咪/ 2022年05月14日 14:39/ 0 赞/ 170 阅读
还没有评论,来说两句吧...