java通过反射获取调用变量以及方法
一:反射概念
可以通过Class类获取某个类的成员变量以及方法,并且调用之。
二:通过反射获取方法、变量、构造方法
@Test
// 通过反射获取类定义的方法
public void testMethod() throws Exception {
@SuppressWarnings("rawtypes")
Class clazz = Class.forName("java.lang.String");
Method[] m = clazz.getDeclaredMethods();
for (int i = 0; i < m.length; i++) {
System.out.println(m[i].getName() + " " + m[i].getDeclaringClass());
}
} @Test
// 通过反射获取类定义的变量
public void testField() throws Exception {
@SuppressWarnings("rawtypes")
Class clazz = Class.forName("java.lang.String");
Field[] fields = clazz.getFields();
for (Field f : fields) {
System.out.println(f.getName());
}
} @Test
// 通过反射获取类定义的构造方法
public void testConstructor() throws Exception {
@SuppressWarnings("rawtypes")
Class clazz = Class.forName("java.lang.String");
@SuppressWarnings("rawtypes")
Constructor[] cons = clazz.getConstructors();
for (@SuppressWarnings("rawtypes")
Constructor c : cons) {
System.out.println(c + " " + c.getDeclaringClass());
}
}
三:通过反射调用类定义的方法
@Test
// 通过反射调用类定义的方法
public void testInvokeMethod() throws Exception {
Class clazz = Class.forName("java.lang.String");
// 定义参数类型
Class[] params = new Class[1];
params[0] = String.class;
Method m = clazz.getDeclaredMethod("indexOf", params);
// 设置参数
Object[] p = new Object[1];
p[0] = "e";
Integer s = (Integer) m.invoke("helloworld!", p);
System.out.println(s);
}
java通过反射获取调用变量以及方法的更多相关文章
- java 通过反射获取调用类方法及属性
首先说下反射是什么?反射是Sun公司推出的一组API,此组API位于Java.lang.reflect中 反射的作用是编写工具(例如eclipse),编写框架,当然对于一般的程序,我们不可能用反射来做 ...
- Android(java)学习笔记109:通过反射获取成员变量和成员方法并且使用
一.反射获取成员变量并且使用: 1.获取字节码文件对象: Class c = Class.forName("cn.itcast_01.Person"); 2.使用无 ...
- Android(java)学习笔记50:通过反射获取成员变量和成员方法并且使用
1. 反射获取成员变量并且使用: (1)获取字节码文件对象: Class c = Class.forName("cn.itcast_01.Person"); (2) ...
- java 27 - 4 反射之 通过反射获取成员变量并使用
类Field: 提供有关类或接口的单个字段的信息,以及对它的动态访问权限. A:获得类的成员变量 数组: 1.getFields(公共类的) 2.getDeclaredFields(所有类型的) B: ...
- java利用反射获取类的属性及类型
java利用反射获取类的属性及类型. import java.lang.reflect.Field; import java.math.BigDecimal; import java.util.Map ...
- 2019-4-16-C#-使用反射获取私有属性的方法
title author date CreateTime categories C# 使用反射获取私有属性的方法 lindexi 2019-4-16 10:13:3 +0800 2018-09-26 ...
- Java编程中获取键盘输入实现方法及注意事项
Java编程中获取键盘输入实现方法及注意事项 1. 键盘输入一个数组 package com.wen201807.sort; import java.util.Scanner; public clas ...
- .NET Core 反射获取所有控制器及方法上特定标签
.NET Core 反射获取所有控制器及方法上特定标签 有个需求,就是在. NET Core中,我们想在项目 启动时,获取LinCmsAuthorizeAttribute这个特性标签所有出现的地方,把 ...
- Java反射机制调用对象的方法 —— 将一个对象的属性值赋值给另一个对象的属性
模拟一个场景: 众所周知,EasyExcel导出Excel文档是依赖于注解完成的,在实体类需要导出的属性上面加上注解,导出的时候会自动识别该属性. 假如我们现在需要导出用户的信息,又不想污染原本的实体 ...
随机推荐
- (R)?ex - A simple framework to simplify system administration and datacenter automation
找工作-互联网招聘求职网-拉勾网 5-10年 (R)?ex - A simple framework to simplify system administration and datacenter ...
- 转】Apache解决高并发和高可用
原博主于: http://www.ha97.com/5803.html 感谢! 服务器集群 Apache 和 nginx(web服务器) 1. 多台集群机器联合处理一个任务. 2. 一台机器处 ...
- word2003公式编辑器公式显示不完整问题
在段落里设置行距为:单倍行距.
- Oracle创建dblink报错:ORA-01017、ORA-02063解决
Oracle环境:oracle 10.2.0.1 创建的 public dblink 连接oracle 11.2.0.3 ORA-01017: invalid username/password; l ...
- 分析恶意驱动(进程启动apc注入dll)
一.前言 用IDA也有好些时间了,以前就只会用F5功能玩无壳无保护的裸驱动,感觉太坑了,这两天就开始看网上大牛的逆向. 今天记录一下sudami曾经逆向过的fuck.sys.第一遍自己走的时候漏掉了 ...
- vim 打开多个文件
一.如果在终端还没有打开vim 1.vim横向分屏打开多个文件 vim -o 文件1 文件2 2.vim纵向分屏打开多个文件 vim -O 文件1 文件2 二.如果在终端已经打开vim 1.横向分屏打 ...
- SQL SERVER 2008/2012/2012R2/2014 设置开启远程连接(sa配置)
本文方案适用于Microsoft Sql Server 2008/2012/2012 r2/2014版本,以下简称MSSQLSERVER. MSSQL默认是不允许远程连接,并且禁用sa账户的.如果想要 ...
- Ext.tree.Panel Extjs 在表格中添加树结构,并实现节点移动功能
最近在用Extjs 做后台管理系统,真的非常好用.总结的东西分享一下. 先展示一下效果图 好了,开始吧! 首先说一下我的创建结构: 一.构造内容 这个函数中包括store的创建,treePanel的创 ...
- C# 解压zip压缩文件
此方法需要在程序内引用ICSharpCode.SharpZipLib.dll 类库 /// <summary> /// 功能:解压zip格式的文件. /// </summary> ...
- ADO.NET 快速入门(六):读写 XML
ADO.NET 和 DataSet 可以读写 XML Schema 和 XML.获取更多信息,请参考 How do I...Use XML and the DataSet? DataSet 的 S ...