/*
* 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反射遍历实体类属性和类型,并赋值和获取值的更多相关文章

  1. java中遍历实体类属性和类型

    public static void testReflect(Object model) throws NoSuchMethodException, IllegalAccessException, I ...

  2. java中遍历实体类属性和类型,属性值

    public static void testReflect(Object model) throws NoSuchMethodException, IllegalAccessException, I ...

  3. java中遍历实体类,获取属性名和属性值

    方式一(实体类): //java中遍历实体类,获取属性名和属性值 public static void testReflect(Object model) throws Exception{ for ...

  4. Java中遍历实体类(处理MongoDB)

    在实际过程中,经常要将实体类进行封装,尤其是处理数据库的过程中:因此,对于遍历实体类能够与数据库中的一行数据对应起来. 我是使用的环境是Spring boot,访问的数据库时MongoDB 实体类遍历 ...

  5. 利用c#反射实现实体类生成以及数据获取与赋值

    转:http://hi.baidu.com/xyd21c/item/391da2fc8fb351c10dd1c8b8 原有的实体类成员逐个赋值与获取的方法弊端: 1.每次对实体类属性进行赋值时,都要检 ...

  6. java反射对实体类取值和赋值

    public static void checkDesignerEdit(Object dtos) throws Exception { Class dtosClass = dtos.getClass ...

  7. java反射对实体类取值和赋值,可以写成通过实体类获取其他元素的数据,很方便哦~~~

    项目中需要过滤前面表单页面中传过来的实体类的中的String类型变量的前后空格过滤,由于前几天看过一个其他技术博客的的java反射讲解,非常受益.于是,哈哈哈 public static <T& ...

  8. asp.net 自动遍历实体类

    最近做项目需要读取修改前数据库中被修改的数据所有的信息,一开始想要在model层的每个类都写一个函数return一串字符串, 但是由于表太多,实体类数量太大,写出来太浪费时间,所以决定写一个通用的方法 ...

  9. 【转】java遍历实体类的属性和数据类型以及属性值

    和同学接了个外包的活,由于项目中很多地方要用到poi导出excel,而每次导出都要写很多相同的代码,因为poi的cell.setCellValue();每次设置的都是不同实体bean的属性值,导致代码 ...

随机推荐

  1. apollo配置相关

    一.运维 1. 数据库ConfigDB,PortalDB 2. 基础服务 :Config-Service,(Meta-Server),Admin-Service,Portal 3. 应用在SIT.UA ...

  2. C++Primer #7 类

    类的定义 简单的来说类就是数据和它的操作的一种封装,内部提供接口函数 类的成员函数的声明必须在类的内部,而它的定义则既可以放在类的内部也可以放在类的外部.(一般在类内进行声明,类外实现函数定义) 定义 ...

  3. Android Studio 3.0正式版填坑之路

    原文:https://www.jianshu.com/p/9b25087a5d7d   Android Studio 3.0启动图 序言 总看别人的文章,今天尝试着自己来写一篇.在逛论坛时候,无意间发 ...

  4. maven windows 环境变量

    MAVEN_HOME,内容是解压的maven文件路径 Path中添加 %MAVEN_HOME%\bin 为了测试安装成功,打开命令提示符,输入 mvn -version

  5. fullcalendar插件日程管理

    日程管理-fullcalendar插件用法   前言 本文分享fullcalendar用法,最后面提供代码下载 说到日程管理,基于JQuery的插件FullCalendar当之无愧,完整的API稳定和 ...

  6. 【LOJ】#2494. 「AHOI / HNOI2018」寻宝游戏

    题面 题解 第\(i\)个数之前的符号是或那么记为0,是与就记为1,得到一个二进数x 然后按位分开考虑,如果这一行是1那么记为1,如果这一位数位0记为0,得到一个二进制数\(b_i\) 第\(N\)行 ...

  7. Storm程序的并发机制(重点掌握)

    概念 Workers (JVMs): 在一个物理节点上可以运行一个或多个独立的JVM 进程.一个Topology可以包含一个或多个worker(并行的跑在不同的物理机上), 所以worker proc ...

  8. 修改MySQL中的数据

    一:insert语句 1.介绍 在执行插入语句前,需要具有执行INSERT语句的INSERT权限. 2.准备环境 3.简单insert语句 4.插入多行 在这种形式中,每行的值列表用逗号分隔. 如果为 ...

  9. SQL server学习(一)数据库的基本知识、基本操作和基本语法

    在软件测试中,数据库是必备知识,假期闲里偷忙,整理了一点学习笔记,共同探讨. 阅读目录 基本知识 数据库发展史 数据库名词 SQL组成 基本操作 登录数据库操作 数据库远程连接操作 数据库分离操作 数 ...

  10. 大纲2.3 Internet

    Internet:域名系统基础知识和配置,上网查询访问的方法,常用电子邮件的种类和收发电子邮件的方法,网络信息搜索,网络信息下载.上传的基本方法,网络信息共享方法. DNS域名系统 域名 不区分大小写 ...