热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java反射技术:遍历实体类属性与类型,并实现赋值与获取

本文介绍了一种利用Java反射机制遍历实体类的所有属性,包括属性名称和类型,并提供了一个示例代码来演示如何对这些属性进行赋值及获取其值的方法。

示例代码如下:




import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Date;

/**
* 使用反射技术获取实体类的属性名及其类型,并对其进行操作。
* @param entity 实体对象实例
* @throws Exception 可能抛出的各种异常
*/
public class EntityReflection {

public static void reflectEntity(Object entity) throws Exception {
// 获取实体类的所有字段
Field[] fields = entity.getClass().getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true); // 设置字段可访问(包括私有字段)
String fieldName = field.getName(); // 获取字段名称
Class fieldType = field.getType(); // 获取字段类型

// 输出字段信息
System.out.println("Field Name: " + fieldName + ", Type: " + fieldType.getName());

// 为字段赋值
if (fieldType == String.class) {
field.set(entity, "示例字符串");
} else if (fieldType == int.class || fieldType == Integer.class) {
field.set(entity, 123);
} else if (fieldType == double.class || fieldType == Double.class) {
field.set(entity, 123.45);
} else if (fieldType == boolean.class || fieldType == Boolean.class) {
field.set(entity, true);
} else if (fieldType == Date.class) {
field.set(entity, new Date());
}

// 获取字段值
Method getter = entity.getClass().getMethod("get" + capitalize(fieldName));
Object fieldValue = getter.invoke(entity);
System.out.println("Field Value: " + fieldValue);
}
}

private static String capitalize(String str) {
return Character.toUpperCase(str.charAt(0)) + str.substring(1);
}

public static void main(String[] args) {
try {
MyEntity myEntity = new MyEntity();
reflectEntity(myEntity);
} catch (Exception e) {
e.printStackTrace();
}
}
}

// 示例实体类
class MyEntity {
private String name;
private int age;
private double height;
private boolean active;
private Date createdAt;

// Getters and Setters...
}


通过上述示例代码,我们展示了如何使用Java反射技术来动态地操作实体类的属性,包括获取属性名称、类型、设置属性值以及获取属性值等操作。此方法在处理不确定结构的数据时非常有用,例如在开发框架或工具库时,可以提高代码的灵活性和复用性。


推荐阅读
author-avatar
一腕儿本人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有