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
}
相关推荐
标题中的“通过构造及反射实现类属性赋值”涉及到的技术是Java的构造函数和反射机制。这两种方法在特定场景下能帮助我们更灵活、更深入地处理对象属性的复制。 首先,构造函数是创建新对象时调用的特殊方法,它可以...
### Java反射机制详解:给指定字段赋值 在Java编程语言中,反射是一个非常强大的功能,它允许程序在运行时检查或“反映”自身,并直接操作内部属性(如类、方法和字段)。本文将深入探讨如何利用Java反射来访问并...
利用反射给属性赋值是编程中一种灵活而强大的技术,它可以帮助我们处理动态性、灵活性和复杂性。然而,由于其潜在的安全问题和性能影响,应合理使用并在必要时采取适当的保护措施。在理解了反射的工作原理和应用场景...
3. **给属性赋值**: - 使用`field[i].getType().getConstructor(field[i].getType()).newInstance("kou")`创建字段类型的实例,并将其作为参数传递给`set`方法,从而给字段赋值。这适用于基本类型和字符串类型的...
通过这样的方式,我们利用Java反射机制实现了对实体类所有属性的遍历,并在遇到null值时为其赋上默认值,从而避免了因null值导致的问题。这种技术在处理动态数据、序列化和反序列化、框架和库的实现等方面非常有用,...
使用反射技术对java实体类进行操作,得到所有属性并赋值给属性
反射是Java提供的一种能够在运行时分析类的信息并操作类的成员(如方法、属性)的能力。通过反射,可以在运行时动态获取类的信息,并根据这些信息创建实例、调用方法、修改属性等,这为编程提供了极大的灵活性。 ##...
例如,假设XML文件中有一个`employee`元素,我们可以使用反射创建对应的`Employee`类实例,并将`employee`元素的属性赋值给`Employee`对象的相应字段。这在配置驱动的设计模式中非常常见,比如Spring框架就是通过...
在“实体类反射非空赋值,AjaxJson工具类”这个主题中,我们将探讨如何使用反射来安全地为实体类的属性赋值,并结合Ajax与JSON进行数据的转换和交互。 首先,让我们深入了解反射的概念。Java反射API提供了Class类,...
这篇文章主要介绍了JavaScript 反射和属性赋值实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Java和.NET都有着比较完善的反射机制,用来处理未知的...
Java 1.5引入的反射机制是其动态性的一个重要体现,它允许程序在运行时检查和操作类、接口、对象及其方法。反射为开发者提供了强大的能力,可以在不知道具体类名的情况下实例化对象,调用方法,访问字段,以及处理...
3. 反射获取属性变量 3.1 获取所有public修饰符的成员变量 3.2 获取指定字段并赋值 3.3 获取所有的成员变量(不考虑修饰符) 3.4 获取私有的变量(利用暴力反射) 4. 反射获取构造方法 4.1有参构造 4.2无参构造 ...
Java实现不同的类的属性之间...这篇文章讲解了如何使用 Java 实现不同的类的属性之间相互赋值,使用了 Java 的反射机制来实现属性之间的赋值。这种方法可以帮助我们在开发过程中快速实现属性之间的赋值,提高开发效率。
总的来说,Java反射机制的使用可以帮助我们在运行时动态地访问和修改类的行为,而上述示例展示了如何利用反射在实体类之间进行属性的自动赋值,这在数据处理和对象复制场景中非常有用。然而,需要注意的是,过度使用...
提供以下几个功能: 1. 取最简类名 2. 动态赋值 3. 动态取值 4. 判断是否普通类型(自定义成员变量) 5. 动态取指定类的所有属性名
在Python编程语言中,虽然没有像Java那样直接的“反射”机制,但Python提供了一套类似的动态类型系统和元编程能力,使得程序在运行时能够检查、修改甚至创建类和对象。这种特性使得Python代码更加灵活,允许程序员在...
Java反射机制是Java语言中一个强大的工具,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在动态代理部分,我们将探讨如何利用反射机制实现动态代理,这在处理面向切面编程(AOP)或者为已...
如果操作类型是这两种之一,拦截器就会继续进行属性赋值。否则,它会跳出循环,不进行额外操作。 在实际赋值部分,由于示例代码没有给出具体的赋值逻辑,通常这会涉及到反射(`java.lang.reflect.InvocationTarget...