`

通过反射,获取类的属性名称和属性值

    博客分类:
  • Java
阅读更多

通过反射,获取类的属性名称和属性值

 

1.获取属性名称:

Field[] fields =obj.getClass().getDeclaredFields();

ProjectBasicInfoDao dao = new ProjectBasicInfoDao();
	int xmid = Integer.valueOf(request.getParameter("xmid"));
	ProjectBasicInfo basicInfo = dao.getProjectBasicInfoByXmid(xmid);
	Field[] fields = basicInfo.getClass().getDeclaredFields();//获取属性名称数组
	JSONObject jObject = new JSONObject();
	for (int i = 0; i < fields.length; i++) {
		String name = fields[i].getName();
		String value = "";
		Object valueObj = getFieldValue(basicInfo ,fields[i].getName());//获取属性值
		if (valueObj != null) {
			value = valueObj.toString();
		}
	jObject.put(name,value);
	}
	JSONObject jObject2 = new JSONObject();
	JSONArray jArray = new JSONArray();
	jArray.put(jObject);
	jObject2.put("data", jArray);

 

Dao获取对象:

public ProjectBasicInfo getProjectBasicInfoByXmid(int xmid) {
		Session s = null;
		ProjectBasicInfo projectBasicInfo = null;
		try {
			s = HibernateUtil.getSession();
			s.beginTransaction();
			Query query = s.createQuery("from ProjectBasicInfo where xmid = :xmid");
			query.setInteger("xmid", xmid);
			projectBasicInfo = (ProjectBasicInfo) query.uniqueResult();
		} catch (Throwable e) {
			logger.error(e.toString());
			HibernateUtil.endSession(s);
		} finally {
			HibernateUtil.endSession(s);
		}
		return projectBasicInfo;
	}

 

2.通过属性名称获取属性值:

(1).通过属性名创建getMethod

(2).用getMethod.invoke(obj)获取属性值

/**
    * 通过反射,用属性名称获得属性值
    * @param thisClass 需要获取属性值的类
    * @param fieldName 该类的属性名称
    * @return
    */
   private Object getFieldValue(Object thisClass, String fieldName)
   {
	   Object value = new Object();
       Method method = null;
       try {
    	   String methodName = fieldName.substring(0, 1).toUpperCase()+ fieldName.substring(1);
    	   method = thisClass.getClass().getMethod("get" + methodName);
    	   value = method.invoke(thisClass);
       } catch (Exception e) {
    	   e.printStackTrace();
       }  
       return value;
   }

 

分享到:
评论

相关推荐

    利用反射机制动态获取对象属性名称及数据类型

    利用反射机制动态获取对象属性名称及数据类型 利用反射机制动态获取对象属性名称及数据类型 利用反射机制动态获取对象属性名称及数据类型 利用反射机制动态获取对象属性名称及数据类型 利用反射机制动态获取对象属性...

    java反射获取所有属性,获取所有get方法,包括子类父类

    java反射获取所有属性,获取所有get方法,包括子类父类,以及包括List集合类

    C#通过属性名字符串获取、设置对象属性值操作示例

    主要介绍了C#通过属性名字符串获取、设置对象属性值操作,结合实例形式总结分析了C#通过反射获取对象属性值并设置属性值,获取对象的所有属性名称及类型等相关操作技巧,需要的朋友可以参考下

    Java 采用反射获取class属性值的实现代码

    以下是对在Java中采用反射获取class属性值的实现代码进行了分析介绍,需要的朋友可以过来参考下

    C#通过属性名称获取(读取)属性值的方法

    其实原理并不复杂,就是通过反射利用属性名称去获取属性值,以前对反射不熟悉,所以没想到啊~ 不得不说反射是一种很强大的技术。。 下面给代码,希望能帮到有需要的人。 using System; using System.Collections....

    基础深化和提高-java反射技术

    通过反射,程序可以在运行时检查类、实例化对象、调用方法、获取和设置属性,甚至可以动态修改类的结构。 Java反射技术的核心在于java.lang.reflect包,它提供了一系列类和接口,用于在运行时获取关于类和对象的...

    01:详解C#中的反射.pdf

    (7)使用PropertyInfo了解属性的名称、数据类型、声明类型、反射类型和只读或可写状态等,获取或设置属性值。 (8)使用ParameterInfo了解参数的名称、数据类型、是输入参数还是输出参数,以及参数在方法签名中的...

    反射在ef中的应用.pdf

    //循环 要修改的属性 名称, 并 反射取出 t 中的 属性对象 for (int index = 0; index ;index++ ) { //获取要修改的属性名 string pName = propertyNames[index]; //获取属性对象 PropertyInfo pi = t....

    C#如何获取枚举的描述属性详解

    通过反射,我们能获取到枚举类型的描述属性。 首先我们需要给枚举类型添加描述属性(属性都没有是不可能取到的),[Description]就是描述属性,使用这个属性,我们需要添加 using System.ComponentModel 引用。 ...

    候捷谈Java反射机制

    JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。...

    Python类反射机制使用实例解析

    获取指定字符串名称的对象属性或方法,如果对象有该属性则返回属性值,如果有该方法则返回该方法的内存地址,如果都没有就报错,如果指定了默认值找不到不会报错会取默认值 hasattr(object, attr) 判断指定字符串...

    tinyrefl:正在进行的最小C ++静态反射API和代码生成工具

    特征反映类和枚举: 类和枚举名称用户声明的构造函数公众成员职能公共成员变量枚举值所有反射实体上的用户定义属性C ++ 14静态反射API :将枚举值转换为字符串,获取类的成员函数集,检查属性,访问对象成员......

    obj-props-dynamic-setter:一个小型库,用于通过仅在运行时知道的属性名称进行操作

    一个小型库,提供对象扩展,专用于获取属性信息并通过仅在运行时知道的属性名称来操纵其值。 在引擎盖下使用反射。 在数据驱动的测试中使用模型属性可能特别有用,但不仅限于此。 支持嵌套属性访问和对非公共属性的...

    JAVA_API1.6文档(中文)

    java.awt.datatransfer 提供在应用程序之间和在应用程序内部传输数据的接口和类。 java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中...

    Liberg:用于基于 spring-boot 的 Web 开发的高性能轻量级套件

    通过反射可以在运行时通过类名称(全限定类名)动态地创建对象、获取对象的属性和方法、为对象赋予新的属性值、调用对象中的方法等等。利用Java的反射机制,动态地创建对象、为对象属性赋值,就可以很容易地实现将...

    Java开发技术大全 电子版

    9.6利用反射获取运行时类信息293 9.6.1使用isInstance()方法判断所属类294 9.6.2获取成员方法信息295 9.6.3获取构造方法信息296 9.6.4获取类的成员属性297 9.6.5根据方法的名称来执行方法299 9.6.6创建新的...

    Java开发技术大全(500个源代码).

    示例描述:本章学习对象和类。 accessMember.java 访问成员变量示例 constructNoPara.java 无参数的构造方法 constructWithPara.java 带参数的构造方法 declareDefault.java 缺省访问权限的使用 declarePrivate...

    轻松学C#(图解版)

    12.7.2 获取和设置文件流属性信息 236 12.8 流写入类StreamWriter 237 12.9 流读取类StreamReader 238 12.9.1 创建StreamReader 239 12.9.2 读取字符或字符块到指定的变量 240 12.10 二进制流写入类BinaryWriter 241...

    CLR.via.C#.(中文第3版)(自制详细书签)Part1

    8.1 实例构造器和类(引用类型) 8.2 实例构造器和结构(值类型) 8.3 类型构造器 8.3.1 类型构造器的性能 8.4 操作符重载方法 8.4.1 操作符和编程语言互操作性 8.5 转换操作符方法 8.6 扩展方法 8.6.1 规则和...

Global site tag (gtag.js) - Google Analytics