JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制
核心代码如下:
package demo.tt;
import java.lang.reflect.Field;
public class ReflectDemo {
/**
* 在使用Flume传递数据的时候,
* Flume传递的数据没有属性名字,只有属性值(一条记录通过分割符分割的字符串),
* 此时唯一能够想到的方法是:
* 方案一:拆分字符串,然后一个个赋值处理 ;
* 方案二:使用反射实现动态赋值
* @param args
* @throws IllegalAccessException
* @throws InstantiationException
*/
@SuppressWarnings("rawtypes")
public static void main(String[] args) throws Exception {
String val ="001;张三;20";
String key ="id;name;age";
UserVO virtualUser = new UserVO();
Class clazz = virtualUser.getClass();
Object bean = clazz.newInstance();
String[] keys = key.split(";");
String[] vals = val.split(";");
for (int i = 0; i < vals.length; i++) {
Field field = bean.getClass().getDeclaredField(keys[i]);//int String
field.setAccessible(true);
String type = field.getType().toString();//得到此属性的类型
if (type.endsWith("String")) {
System.out.println(field.getType()+"\t是String");
field.set(bean,vals[i]) ; //给属性设值
}else if(type.endsWith("int") || type.endsWith("Integer")){
System.out.println(field.getType()+"\t是int");
field.set(bean,Integer.valueOf(vals[i])) ; //给属性设值
}else{
System.out.println(field.getType()+"\t");
}
//System.out.println(field.getType().getSimpleName());
}
System.out.println(bean);
}
}
------------------------------------------------------------------------------------------------------------------
public class UserVO {
private int id;
private String name;
private int age;
省略get/set
}
相关推荐
给目标对象赋值另一个对象时,只是将源对象的地址指向了目标对象,而并没有执行对象属性的set器,有时需要使用set做通知,本实例通过构造及反射实现类属性自动赋值。
主要介绍了 java 利用反射机制,获取实体所有属性和方法,并对属性赋值的相关资料,需要的朋友可以参考下
下面小编就为大家带来一篇java反射遍历实体类属性和类型,并赋值和获取值的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
使用反射技术对java实体类进行操作,得到所有属性并赋值给属性
这篇文章主要介绍了JavaScript 反射和属性赋值实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Java和.NET都有着比较完善的反射机制,用来处理未知的...
3. 反射获取属性变量 3.1 获取所有public修饰符的成员变量 3.2 获取指定字段并赋值 3.3 获取所有的成员变量(不考虑修饰符) 3.4 获取私有的变量(利用暴力反射) 4. 反射获取构造方法 4.1有参构造 4.2无参构造 ...
提供以下几个功能: 1. 取最简类名 2. 动态赋值 3. 动态取值 4. 判断是否普通类型(自定义成员变量) 5. 动态取指定类的所有属性名
这里是个人整理的Java反射大杂烩,里面有获取类的继承关系,类的属性,类的方法,调用类中的方法,给类中私有属性赋值。。。。一系列操作。
主要介绍了Java反射如何修改private final成员变量值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
listFields.java 利用反射机制获取成员属性列表 listMethods.java 利用反射机制获取成员方法列表 loadClass.java 动态装载一个类 Shape.java 一个用于测试的简单类 useArray1.java 用反射机制使用数组示例1 ...
文章目录一、理解反射的基础(重要指数五颗星爆表)1.Class文件2.Java虚拟机的类加载机制二、反射——框架设计的灵魂2.1是什么2.2与反射相关的类三、反射的使用3.1获得Class对象的三种方式3.2反射调用构造方法并使用...
在使用Java反射机制时,主要步骤包括: ①获取 目标类型的Class对象 ②通过 Class 对象分别获取Constructor类对象、Method类对象 & Field 类对象 ③通过 Constructor类对象、Method类对象 & Field类对象分别获取类...
15.2 使用Java反射机制414 15.2.1 获取类型信息414 15.2.2 创建对象417 15.2.3 调用方法419 15.2.4 访问成员变量的值421 15.2.5 操作数组422 15.3 反射与动态代理424 15.3.1 静态代理424 15.3.2 动态代理426 15.4 本...
反射回去到一个类,类名,类的所有属性,创建对象,给对象中私有属性赋值。还记得刚开始学java的时候,对于java里的私有属性,想要操作它,得需要通过创建对象调用它set或get方法,才能操作这些私有属性。那么对于使用...
学生提问:为什么有栈内存和堆内存之分? 93 4.6.2 基本类型数组的初始化 95 4.6.3 引用类型数组的初始化 96 4.6.4 没有多维数组 99 学生提问:我是否可以让图4.13中灰色覆盖的数组元素再次指向另一个数组?这样...
10.2 增添属性和有用的接口 10.2.1 通过FilterInputStream从InputStream里读入数据 10.2.2 通过FilterOutputStream向OutputStream里写入数据 10.3 本身的缺陷:RandomAccessFile 10.4 File类 10.4.1 目录列表器 ...
10.2 增添属性和有用的接口 10.2.1 通过FilterInputStream从InputStream里读入数据 10.2.2 通过FilterOutputStream向OutputStream里写入数据 10.3 本身的缺陷:RandomAccessFile 10.4 File类 10.4.1 目录列表器 ...
10.2 增添属性和有用的接口 10.2.1 通过FilterInputStream从InputStream里读入数据 10.2.2 通过FilterOutputStream向OutputStream里写入数据 10.3 本身的缺陷:RandomAccessFile 10.4 File类 10.4.1 目录列表器 ...
10.2 增添属性和有用的接口 10.2.1 通过FilterInputStream从InputStream里读入数据 10.2.2 通过FilterOutputStream向OutputStream里写入数据 10.3 本身的缺陷:RandomAccessFile 10.4 File类 10.4.1 目录列表器 ...
10.2 增添属性和有用的接口 10.2.1 通过FilterInputStream从InputStream里读入数据 10.2.2 通过FilterOutputStream向OutputStream里写入数据 10.3 本身的缺陷: 10.4 File类 10.4.1 目录列表器 10.4.2 检查与创建...