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();
- }
- }
- }
java反射遍历实体类属性和类型,并赋值和获取值的更多相关文章
- java中遍历实体类属性和类型
public static void testReflect(Object model) throws NoSuchMethodException, IllegalAccessException, I ...
- java中遍历实体类属性和类型,属性值
public static void testReflect(Object model) throws NoSuchMethodException, IllegalAccessException, I ...
- java中遍历实体类,获取属性名和属性值
方式一(实体类): //java中遍历实体类,获取属性名和属性值 public static void testReflect(Object model) throws Exception{ for ...
- Java中遍历实体类(处理MongoDB)
在实际过程中,经常要将实体类进行封装,尤其是处理数据库的过程中:因此,对于遍历实体类能够与数据库中的一行数据对应起来. 我是使用的环境是Spring boot,访问的数据库时MongoDB 实体类遍历 ...
- 利用c#反射实现实体类生成以及数据获取与赋值
转:http://hi.baidu.com/xyd21c/item/391da2fc8fb351c10dd1c8b8 原有的实体类成员逐个赋值与获取的方法弊端: 1.每次对实体类属性进行赋值时,都要检 ...
- java反射对实体类取值和赋值
public static void checkDesignerEdit(Object dtos) throws Exception { Class dtosClass = dtos.getClass ...
- java反射对实体类取值和赋值,可以写成通过实体类获取其他元素的数据,很方便哦~~~
项目中需要过滤前面表单页面中传过来的实体类的中的String类型变量的前后空格过滤,由于前几天看过一个其他技术博客的的java反射讲解,非常受益.于是,哈哈哈 public static <T& ...
- asp.net 自动遍历实体类
最近做项目需要读取修改前数据库中被修改的数据所有的信息,一开始想要在model层的每个类都写一个函数return一串字符串, 但是由于表太多,实体类数量太大,写出来太浪费时间,所以决定写一个通用的方法 ...
- 【转】java遍历实体类的属性和数据类型以及属性值
和同学接了个外包的活,由于项目中很多地方要用到poi导出excel,而每次导出都要写很多相同的代码,因为poi的cell.setCellValue();每次设置的都是不同实体bean的属性值,导致代码 ...
随机推荐
- navicate连接Linux下mysql慢,卡,以及mysql相关查询,授权
方法,网上的办法是在my.ini的“[mysqld]”下面加入一行“skip-name-resolve”,就像这样: 然后保存并重启mysql服务即可. service mysqld restart ...
- CSS工具之CSS重置(CSS Reset)
css代码: /* v1.0 | 20080212 */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, ...
- P1508 Likecloud-吃、吃、吃 DP
题目背景 问世间,青春期为何物? 答曰:“甲亢,甲亢,再甲亢:挨饿,挨饿,再挨饿!” 题目描述 正处在某一特定时期之中的李大水牛由于消化系统比较发达,最近一直处在饥饿的状态中.某日上课,正当他饿得头昏 ...
- 【LeetCode】65. Valid Number
Difficulty: Hard More:[目录]LeetCode Java实现 Description Validate if a given string can be interpreted ...
- maven 不同环境打包命令
mvn clean package mvn clean package -Pdev mvn clean package -Ptest mvn clean package -Pproduct
- Xcode6.1 模拟器路径
Xcode 5的iOS模拟器的应用的目录是在~/Library/Application Support/iPhone Simulator/<iOS_Version>/Application ...
- 006.Zabbix添加监控主机
一 配置步骤和流程 Zabbix完整的监控配置流程可以简单的描述为: Host groups(主机组)---->Hosts(主机)---->Applications(监控项组)----&g ...
- 安装redis时候的坑
安装redis时候的坑 随手记录一下,以此为借鉴. 1.按照需求下载redis服务 redis可视化文件 2.安装及环境搭建 修改服务里redis.windows-service.conf文件,或者r ...
- 条件随机场(crf)及tensorflow代码实例
对于条件随机场的学习,我觉得应该结合HMM模型一起进行对比学习.首先浏览HMM模型:https://www.cnblogs.com/pinking/p/8531405.html 一.定义 条件随机场( ...
- 喵哈哈村的魔法考试 Round #7 (Div.2) 题解
喵哈哈村的魔法考试 Round #7 (Div.2) 注意!后四道题来自于周日的hihocoder offer收割赛第九场. 我建了个群:欢迎加入qscoj交流群,群号码:540667432 大概作为 ...