我是靠谱客的博主 怕孤独纸鹤,最近开发中收集的这篇文章主要介绍java反射遍历实体类属性和类型,并赋值和获取值,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

/*
* GetModelNameAndType.java
* Version 1.0.0
* Created on 2017年12月15日
* Copyright ReYo.Cn
*/
package reyo.sdk.utils.reflect;
/**
* <B>创
建 人:</B>AdministratorReyoAut <BR>
* <B>创建时间:</B>2017年12月15日 下午9:20:44<BR>
*
* @author ReYo
* @version 1.0
*/
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Date;
/**
* 获取实体类型的属性名和类型
* @param model 为实体类
* @author kou
为传入参数
*/
public class GetModelNameAndType {
public static void testReflect(Object model) throws SecurityException, NoSuchMethodException,
IllegalArgumentException, IllegalAccessException, InvocationTargetException, InstantiationException {
// 获取实体类的所有属性,返回Field数组

Field[] field = model.getClass().getDeclaredFields();
// 获取属性的名字

String[] modelName = new String[field.length];
String[] modelType = new String[field.length];
for (int i = 0; i < field.length; i++) {
// 获取属性的名字

String name = field[i].getName();
modelName[i] = name;
// 获取属性类型

String type = field[i].getGenericType().toString();
modelType[i] = type;
//关键。。。可访问私有变量

field[i].setAccessible(true);
//给属性设置

field[i].set(model, field[i].getType().getConstructor(field[i].getType()).newInstance("kou"));
// 将属性的首字母大写

name = name.replaceFirst(name.substring(0, 1), name.substring(0, 1).toUpperCase());
if (type.equals("class java.lang.String")) {
// 如果type是类类型,则前面包含"class ",后面跟类名

Method m = model.getClass().getMethod("get" + name);
// 调用getter方法获取属性值

String value = (String) m.invoke(model);
if (value != null) {
System.out.println("attribute value:" + value);
}
}
if (type.equals("class java.lang.Integer")) {
Method m = model.getClass().getMethod("get" + name);
Integer value = (Integer) m.invoke(model);
if (value != null) {
System.out.println("attribute value:" + value);
}
}
if (type.equals("class java.lang.Short")) {
Method m = model.getClass().getMethod("get" + name);
Short value = (Short) m.invoke(model);
if (value != null) {
System.out.println("attribute value:" + value);
}
}
if (type.equals("class java.lang.Double")) {
Method m = model.getClass().getMethod("get" + name);
Double value = (Double) m.invoke(model);
if (value != null) {
System.out.println("attribute value:" + value);
}
}
if (type.equals("class java.lang.Boolean")) {
Method m = model.getClass().getMethod("get" + name);
Boolean value = (Boolean) m.invoke(model);
if (value != null) {
System.out.println("attribute value:" + value);
}
}
if (type.equals("class java.util.Date")) {
Method m = model.getClass().getMethod("get" + name);
Date value = (Date) m.invoke(model);
if (value != null) {
System.out.println("attribute value:" + value.toLocaleString());
}
}
}
}
public static void main(String[] args) {
try {
testReflect(new VO());
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
}
}
}

 

转载于:https://www.cnblogs.com/interdrp/p/8044899.html

最后

以上就是怕孤独纸鹤为你收集整理的java反射遍历实体类属性和类型,并赋值和获取值的全部内容,希望文章能够帮你解决java反射遍历实体类属性和类型,并赋值和获取值所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部