java通过反射获取调用变量以及方法
发布日期:2021-06-24 18:20:09 浏览次数:3 分类:技术文章

本文共 1726 字,大约阅读时间需要 5 分钟。

一:反射概念

可以通过Class类获取某个类的成员变量以及方法,并且调用之。

 

二:通过反射获取方法、变量、构造方法

 

1 @Test 2     // 通过反射获取类定义的方法 3     public void testMethod() throws Exception { 4         @SuppressWarnings("rawtypes") 5         Class clazz = Class.forName("java.lang.String"); 6         Method[] m = clazz.getDeclaredMethods(); 7         for (int i = 0; i < m.length; i++) { 8             System.out.println(m[i].getName() + " " + m[i].getDeclaringClass()); 9         }10     }11 12     @Test13     // 通过反射获取类定义的变量14     public void testField() throws Exception {15         @SuppressWarnings("rawtypes")16         Class clazz = Class.forName("java.lang.String");17         Field[] fields = clazz.getFields();18         for (Field f : fields) {19             System.out.println(f.getName());20         }21     }22 23     @Test24     // 通过反射获取类定义的构造方法25     public void testConstructor() throws Exception {26         @SuppressWarnings("rawtypes")27         Class clazz = Class.forName("java.lang.String");28         @SuppressWarnings("rawtypes")29         Constructor[] cons = clazz.getConstructors();30         for (@SuppressWarnings("rawtypes")31         Constructor c : cons) {32             System.out.println(c + " " + c.getDeclaringClass());33         }34     }

 

三:通过反射调用类定义的方法

 

1 @Test 2     // 通过反射调用类定义的方法 3     public void testInvokeMethod() throws Exception { 4         Class clazz = Class.forName("java.lang.String"); 5         // 定义参数类型 6         Class[] params = new Class[1]; 7         params[0] = String.class; 8         Method m = clazz.getDeclaredMethod("indexOf", params); 9         // 设置参数10         Object[] p = new Object[1];11         p[0] = "e";12         Integer s = (Integer) m.invoke("helloworld!", p);13         System.out.println(s);14     }

 

转载地址:https://blog.csdn.net/weixin_34248258/article/details/86433960 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:atitit 业务 触发器原理. 与事件原理 docx
下一篇:Ubuntu下,terminal经常使用快捷键

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月01日 04时37分40秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

C#中Windows服务的新建、安装和启动 2019-04-28
机器学习实战:TensorFlow构建逻辑回归模型 2019-04-28
机器学习实战:TensorFlow构建简单的神经网络架构 2019-04-28
机器学习实战:TensorFlow构建简单卷积神经网络 2019-04-28
机器学习实战:TensorFlow模型的保存和读取 2019-04-28
MAC SystemError:‘class ‘cv2.CascadeClassifier’‘ returned a result with an error set 2019-04-28
人工智能实践:Tensorflow笔记(五):卷积网络基础与实践 2019-04-28
编译原理 1.1 2019-04-28
win10磁盘如何解锁bitlocker,解决分区助手无法调整分区问题 2019-04-28
Github生成ssh 密钥和怎样向gitHub上传文件(详细教程) 2019-04-28
cmd更换默认编码 2019-04-28
MySQL 之使用uuid_short 报错 Out of range value for column 'id' at row 1 问题 2019-04-28
Could not initialize class sun.awt.X11GraphicsEnvironment异常处理 2019-04-28
redis缓存雪崩、穿透、击穿概念、布隆过滤器小结及解决办法 2019-04-28
用idea新建maven项目,创建Scala项目--做个记录 2019-04-28
【pom.xml 依赖】使用net.sf.json-lib-2.4-jdk15.jar所需要的其他依赖架包 以及其一直在pom.xml报错的问题 2019-04-28
Mybatis异常There is no getter for property named 'XXX' in 'class java.lang.String' 2019-04-28
Eclipse中通过Tomcat运行JavaWeb项目报错:java.lang.OutOfMemoryError: PermGen space 错误的解决方案 2021-07-01
Tomcat运行 报错:Error configuring application listener of class org.springframework.web.cont 2021-07-01
struts2框架总结:(二) 2021-07-01