1. /*
  2. * GetModelNameAndType.java
  3. * Version 1.0.0
  4. * Created on 2017年12月15日
  5. * Copyright ReYo.Cn
  6. */
  7. package reyo.sdk.utils.reflect;
  8.  
  9. /**
  10. * <B>创 建 人:</B>AdministratorReyoAut <BR>
  11. * <B>创建时间:</B>2017年12月15日 下午9:20:44<BR>
  12. *
  13. * @author ReYo
  14. * @version 1.0
  15. */
  16. import java.lang.reflect.Field;
  17. import java.lang.reflect.InvocationTargetException;
  18. import java.lang.reflect.Method;
  19. import java.util.Date;
  20.  
  21. /**
  22. * 获取实体类型的属性名和类型
  23. * @param model 为实体类
  24. * @author kou 为传入参数
  25. */
  26. public class GetModelNameAndType {
  27.  
  28. public static void testReflect(Object model) throws SecurityException, NoSuchMethodException,
  29. IllegalArgumentException, IllegalAccessException, InvocationTargetException, InstantiationException {
  30. // 获取实体类的所有属性,返回Field数组
  31. Field[] field = model.getClass().getDeclaredFields();
  32. // 获取属性的名字
  33. String[] modelName = new String[field.length];
  34. String[] modelType = new String[field.length];
  35. for (int i = 0; i < field.length; i++) {
  36. // 获取属性的名字
  37. String name = field[i].getName();
  38. modelName[i] = name;
  39. // 获取属性类型
  40. String type = field[i].getGenericType().toString();
  41. modelType[i] = type;
  42.  
  43. //关键。。。可访问私有变量
  44. field[i].setAccessible(true);
  45. //给属性设置
  46. field[i].set(model, field[i].getType().getConstructor(field[i].getType()).newInstance("kou"));
  47.  
  48. // 将属性的首字母大写
  49. name = name.replaceFirst(name.substring(0, 1), name.substring(0, 1).toUpperCase());
  50.  
  51. if (type.equals("class java.lang.String")) {
  52. // 如果type是类类型,则前面包含"class ",后面跟类名
  53. Method m = model.getClass().getMethod("get" + name);
  54. // 调用getter方法获取属性值
  55. String value = (String) m.invoke(model);
  56. if (value != null) {
  57.  
  58. System.out.println("attribute value:" + value);
  59. }
  60.  
  61. }
  62. if (type.equals("class java.lang.Integer")) {
  63. Method m = model.getClass().getMethod("get" + name);
  64. Integer value = (Integer) m.invoke(model);
  65. if (value != null) {
  66. System.out.println("attribute value:" + value);
  67. }
  68. }
  69. if (type.equals("class java.lang.Short")) {
  70. Method m = model.getClass().getMethod("get" + name);
  71. Short value = (Short) m.invoke(model);
  72. if (value != null) {
  73. System.out.println("attribute value:" + value);
  74. }
  75. }
  76. if (type.equals("class java.lang.Double")) {
  77. Method m = model.getClass().getMethod("get" + name);
  78. Double value = (Double) m.invoke(model);
  79. if (value != null) {
  80. System.out.println("attribute value:" + value);
  81. }
  82. }
  83. if (type.equals("class java.lang.Boolean")) {
  84. Method m = model.getClass().getMethod("get" + name);
  85. Boolean value = (Boolean) m.invoke(model);
  86. if (value != null) {
  87. System.out.println("attribute value:" + value);
  88. }
  89. }
  90. if (type.equals("class java.util.Date")) {
  91. Method m = model.getClass().getMethod("get" + name);
  92. Date value = (Date) m.invoke(model);
  93. if (value != null) {
  94. System.out.println("attribute value:" + value.toLocaleString());
  95. }
  96. }
  97. }
  98. }
  99.  
  100. public static void main(String[] args) {
  101. try {
  102. testReflect(new VO());
  103. } catch (SecurityException e) {
  104. e.printStackTrace();
  105. } catch (IllegalArgumentException e) {
  106. e.printStackTrace();
  107. } catch (NoSuchMethodException e) {
  108. e.printStackTrace();
  109. } catch (IllegalAccessException e) {
  110. e.printStackTrace();
  111. } catch (InvocationTargetException e) {
  112. e.printStackTrace();
  113. } catch (InstantiationException e) {
  114. e.printStackTrace();
  115. }
  116. }
  117.  
  118. }

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. navicate连接Linux下mysql慢,卡,以及mysql相关查询,授权

    方法,网上的办法是在my.ini的“[mysqld]”下面加入一行“skip-name-resolve”,就像这样: 然后保存并重启mysql服务即可. service mysqld restart ...

  2. CSS工具之CSS重置(CSS Reset)

    css代码: /* v1.0 | 20080212 */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, ...

  3. P1508 Likecloud-吃、吃、吃 DP

    题目背景 问世间,青春期为何物? 答曰:“甲亢,甲亢,再甲亢:挨饿,挨饿,再挨饿!” 题目描述 正处在某一特定时期之中的李大水牛由于消化系统比较发达,最近一直处在饥饿的状态中.某日上课,正当他饿得头昏 ...

  4. 【LeetCode】65. Valid Number

    Difficulty: Hard  More:[目录]LeetCode Java实现 Description Validate if a given string can be interpreted ...

  5. maven 不同环境打包命令

    mvn clean package mvn clean package -Pdev mvn clean package -Ptest mvn clean package -Pproduct

  6. Xcode6.1 模拟器路径

    Xcode 5的iOS模拟器的应用的目录是在~/Library/Application Support/iPhone Simulator/<iOS_Version>/Application ...

  7. 006.Zabbix添加监控主机

    一 配置步骤和流程 Zabbix完整的监控配置流程可以简单的描述为: Host groups(主机组)---->Hosts(主机)---->Applications(监控项组)----&g ...

  8. 安装redis时候的坑

    安装redis时候的坑 随手记录一下,以此为借鉴. 1.按照需求下载redis服务 redis可视化文件 2.安装及环境搭建 修改服务里redis.windows-service.conf文件,或者r ...

  9. 条件随机场(crf)及tensorflow代码实例

    对于条件随机场的学习,我觉得应该结合HMM模型一起进行对比学习.首先浏览HMM模型:https://www.cnblogs.com/pinking/p/8531405.html 一.定义 条件随机场( ...

  10. 喵哈哈村的魔法考试 Round #7 (Div.2) 题解

    喵哈哈村的魔法考试 Round #7 (Div.2) 注意!后四道题来自于周日的hihocoder offer收割赛第九场. 我建了个群:欢迎加入qscoj交流群,群号码:540667432 大概作为 ...