【记录】【java】反射设值取值
1、设值
/**
* 根据属性名设置属性值
*
* @param fieldName
* @param object
* @return
*/
public boolean setFieldValueByFieldName(String fieldName, Object object,String value) {
try {
// 获取obj类的字节文件对象
Class c = object.getClass();
// 获取该类的成员变量
Field f = c.getDeclaredField(fieldName);
// 取消语言访问检查
f.setAccessible(true);
// 给变量赋值
f.set(object, value);
return true;
} catch (Exception e) {
log.error("反射取值异常",e);
return false;
}
}
2、取值
/**
* 根据属性名获取属性值
*
* @param fieldName
* @param object
* @return
*/
public Object getFieldValueByFieldName(String fieldName, Object object) {
try {
Field field = object.getClass().getDeclaredField(fieldName);
//设置对象的访问权限,保证对private的属性的访问
field.setAccessible(true);
return field.get(object);
} catch (Exception e) {
log.error("反射设值异常",e);
return null;
}
}
3、反射调用无参方法
public void execution(String className, String methodName) throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {
Class<?> aClass = Class.forName(className);
Object obj = aClass.newInstance();
Method method = aClass.getMethod(methodName);
method.invoke(obj);
}
4、反射调用有参方法
/**
* 这里只列举只有一个参数的情况,多个类似
*
* @param className
* @param methodName
* @param parameter 参数
* @throws ClassNotFoundException
* @throws IllegalAccessException
* @throws InstantiationException
* @throws NoSuchMethodException
* @throws InvocationTargetException
*/
public void execution(String className, String methodName, Object parameter) throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {
Class<?> aClass = Class.forName(className);
Object obj = aClass.newInstance();
Method method = aClass.getMethod(methodName, parameter.getClass());
method.invoke(obj, parameter);
}
5、反射调用方法(无参也适用)
/**
* 反射调用方法
*
* @param className 全限定类名,例如:com.xiaostudy.test.Mytest1
* @param methodName 方法名,例如:show
* @param parameters 0或多个参数
* @throws ClassNotFoundException
* @throws IllegalAccessException
* @throws InstantiationException
* @throws NoSuchMethodException
* @throws InvocationTargetException
*/
public static void execution(String className, String methodName, Object... parameters) throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {
Class<?> aClass = Class.forName(className);
Object obj = aClass.newInstance();
Class[] classes = new Class[parameters.length];for (int i = 0, length = parameters.length; i < length; i++) {
classes[i] = parameters[i].getClass();
}
Method method = aClass.getMethod(methodName, classes);
method.invoke(obj, parameters);
}
【记录】【java】反射设值取值的更多相关文章
- 了解Java基本数据类型的取值范围
拿byte类型做栗子 一个字节是8位二进制数,然后最高位会用来作为符号位.正数计算机是存的原码,负数是存的补码. 也就说byte正数最大是0111 1111,转化为十进制是:127(这就是byte的上 ...
- Java数据类型及对应取值范围
Java数据类型及对应取值范围 在Java中,数据类型分为两大种:基本数据类型(值类型)和包装类型(引用数据类型).基本数据类型不是对象,不能调用toString().hashCode().getCl ...
- Jmeter的JDBC Request,sql参数化及返回值取值
1.JDBC Request面板 Variable Name:数据库连接池的名字,需要与JDBC Connection Configuration的Variable Name Bound Pool名字 ...
- Java中float/double取值范围与精度
Java浮点数 浮点数结构 要说清楚Java浮点数的取值范围与其精度,必须先了解浮点数的表示方法,浮点数的结构组成,之所以会有这种所谓的结构,是因为机器只认识01,你想表示小数,你要机器认识小数点这个 ...
- Java基本数据类型的取值范围
版权声明:本文为博主原创文章,未经博主允许不得转载. 先看一段代码public class Hello{ public static void main(String[] args){ ...
- dedecms--自定义session存值取值
最近在用用dedecms开发项目,开发项目中遇到需要通过session存储信息在其他页面调取使用,但是对dedecms里面自带的session存储使用不好,我需要存储的是用户登录的时候信息,于是我就使 ...
- Java反射得到属性的值和设置属性的值(转)
package com.whbs.bean; public class UserBean { private Integer id; private int age; private String n ...
- Java反射得到属性的值和设置属性的值
package com.whbs.bean; public class UserBean { private Integer id; private int age; private String n ...
- 为什么Java byte 类型的取值范围是-128~127 (转)
概念:负数的补码是该 数 绝 对 值 的 原 码 按 位 取 反 ,然 后 对 整个数 加 1 步骤: 1.确定byte是1个字节,也就是8位 2.最大的应该是0111 1111,因为第一位是符号位, ...
随机推荐
- 阿里云部署,ubuntu, 连接服务器 |更新源| 安装node |安装mysql
1.连接服务器 xshell 新建连接 ssh root@1.1.1.1 2.更新源 apt-get update 3.安装node apt-get install -y curl curl -sL ...
- ent 基本使用十七 分页与排序
ent 提供了方便的数据分页以及排序处理 limit 分页 users, err := client.User. Query(). Limit(n). All(ctx) offset 分页 users ...
- ring3 x32挂起进程注入原理.
目录 一丶挂起进程注入简介与前言 二丶ShellCode核心讲解. 2.1 保存Contex.EIP 2.2 DLL路径重定位 2.3 LoadLibrary的重定位 三丶 全部C++代码.拷贝即可使 ...
- lintcode-1038. 珠宝和石头
题目描述 给定字符串J代表是珠宝的石头类型,而S代表你拥有的石头.S中的每个字符都是你拥有的一个石头. 你想知道你的石头有多少是珠宝. J中的字母一定不同,J和S中的字符都是字母. 字母区分大小写,因 ...
- Unknown column 'startname' in 'field list
Unknown column 'startname' in 'field list 字段匹配不上 解决思路 1.检查数据库字段名与sql中的字段名是否一致 2.是否为关键字或中英文区别 ,(关键字可 ...
- Spring Boot通过Configuration配置多数据源
本文结合SpringBoot + MyBatis + MySql进行多数据源配置,DataSource信息采用自定义dataSource.properties进行配置. 1.文件结构如下: 2.1 p ...
- js待学习
异步原理 事件循环 任务队列
- 从太空到地球某个位置的轨迹录像制作 | Earth Zoom in/out Tutorial (Record Video)
视频教程:Google Earth - Earth Zoom in/out Tutorial (Record Video) 下载google earth 在search里输入你想要去的地名 zoom ...
- SqlComparison
package com.ufo.leftjoin; import java.security.MessageDigest; import java.sql.Connection; import jav ...
- 坐标转换7参数计算工具——arcgis 地理处理工具案例教程
坐标转换7参数计算工具--arcgis 地理处理工具案例教程 商务合作,科技咨询,版权转让:向日葵,135-4855_4328,xiexiaokui#qq.com 不接受个人免费咨询. 提供API,独 ...