java反射遍历实体类属性和类型,并赋值和获取值的简单方法

网友投稿 1039 2023-05-24


java反射遍历实体类属性和类型,并赋值和获取值的简单方法

实例如下:

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 = (BoolsBWZZXdjean) 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 (InstansBWZZXdjtiationException e)

{

e.printStackTrace();

}

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:MUI 上拉刷新/下拉加载功能实例代码
下一篇:详解Spring Boot加载properties和yml配置文件
相关文章

 发表评论

暂时没有评论,来抢沙发吧~