import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.lang.reflect.*;
public class FiledValueFromClass {
/**
*通过反射获得所有字段的值和字段
* @param publicFiled 类对象
* @return
*/
public Map<String,Object> getPublicFiledMap(Object publicFiled) {
Map<String,Object> filedMap = new HashMap<String,Object>();
//反射publicFiled类的所有字段
Class cla = publicFiled.getClass();
//获得该类下面所有的字段集合
Field[] filed = cla.getDeclaredFields();
for(Field fd : filed) {
String filedName = fd.getName();
String firstLetter = filedName.substring(0,1).toUpperCase(); //获得字段第一个字母大写
String getMethodName = "get"+firstLetter+filedName.substring(1); //转换成字段的get方法
try {
Method getMethod = cla.getMethod(getMethodName, new Class[] {});
Object value = getMethod.invoke(publicFiled, new Object[] {}); //这个对象字段get方法的值
filedMap.put(filedName, value); //添加到Map集合
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
return filedMap;
}
/**
*通过反射获得所有字段的值和字段
* @param publicFiled 类对象对象
* @param filedName 字段名称
* @return
*/
public Object getPublicFiledMap(Object publicFiled,String filedName) {
Object value = null;
//反射publicFiled类的所有字段
Class cla = publicFiled.getClass();
try {
Field field = cla.getDeclaredField(filedName);
String firstLetter = field.getName().substring(0,1).toUpperCase(); //获得字段第一个字母大写
String getMethodName = "get"+firstLetter+field.getName().substring(1); //转换成字段的get方法
try {
Method getMethod = cla.getMethod(getMethodName, new Class[] {});
value = getMethod.invoke(publicFiled, new Object[] {}); //这个对象字段get方法的值
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
return value;
}
}
转http://linapex.blog.163.com/blog/static/18923751620121247414794/
分享到:
相关推荐
在深入探讨如何通过反射获取实体类的字段和值之前,我们先来理解一下反射是什么以及它在.NET框架中的作用。反射是一种强大的编程技术,允许运行时动态地获取类型的信息并操作对象。它提供了对程序集、模块、类型、...
一个Java反射工具类,可以完成查询字段值以及设置字段值的功能。
本文将深入探讨如何通过反射机制来获取自定义注解以及其在字段上的应用。 首先,我们需要了解什么是自定义注解。自定义注解是以`@`开头,后跟自定义的名称。定义一个注解的基本结构如下: ```java import java....
本文将深入探讨如何利用Java反射来访问并修改类的私有字段。 #### 反射的基本概念 反射提供了以下主要功能: - 获取类的信息,如包名、类名等。 - 创建对象实例。 - 调用方法。 - 访问和修改字段。 - 构造器信息...
在Java编程中,注解...这个示例涵盖了Java中使用反射获取注解的基本操作,包括类、方法、注解的值和方法参数。通过实践这个例子,你可以更好地理解和掌握这些概念,从而在实际项目中更有效地利用注解和反射。
在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作类、接口、字段和方法等对象。枚举(Enumeration)是Java中的一个特殊类类型,用于定义一组常量。本项目"test-enum-demo-...
本文将详细介绍如何使用Java反射技术来获取内部类中的静态成员变量的值。 #### 二、背景知识 在深入探讨之前,我们需要了解几个基本概念: 1. **内部类**:内部类是一种特殊的类,定义在另一个类(外部类)的内部。...
总结,Java反射机制为我们提供了强大的动态性,能够方便地获取和操作类的属性和方法,包括私有成员和子类父类中的成员。通过熟练掌握反射技术,开发者可以实现更灵活、更动态的代码,但也需要谨慎使用,以避免潜在的...
总结一下,Java反射机制为我们提供了在运行时检查和操作类、方法的能力。通过`Class.forName()`获取Class对象,再利用`getMethod()`获取方法,最后使用`invoke()`执行方法。在实际开发中,理解并谨慎使用反射,能够...
3. **访问字段**:通过`Class`对象的`getFields()`或`getDeclaredFields()`方法获取所有公共或私有字段,然后使用`Field`对象的`get()`或`set()`方法读取或修改对象的字段值。 4. **调用方法**:使用`Class`对象的`...
1. **读取配置信息**:首先,通过`Properties`类读取配置文件(`D:\\xuliang.txt`),其中包含待加载类名、字段名、字段值和方法名等信息。 2. **加载类**:使用`Class.forName()`方法根据配置文件中的类名动态加载...
在这篇文章中,我们将通过一个实用的例子来展示如何使用Java反射机制来获取对象的属性和值。 在Java中,反射机制是通过java.lang.reflect包中的类和接口来实现的。其中,Class类是反射机制的核心,通过它可以获取类...
通过上述示例,我们可以看到如何利用Java反射机制获取一个类中的所有属性及其对应的值。这种方法非常适用于动态配置或解析对象的场景。需要注意的是,虽然反射提供了强大的功能,但它也存在一定的性能开销,因此在...
实体类可能包含各种属性(如姓名、年龄等)和方法(如获取和设置属性值的方法)。例如: ```java public class Person { private String name; private int age; public Person(String name, int age) { this....
Java反射API提供了一系列类和接口,如`Class`、`Field`、`Method`等,它们让我们能够在运行时动态地获取类的信息,包括类的结构、方法签名以及字段等。这为编程提供了极大的灵活性,尤其是在处理第三方库或者进行元...
Java反射是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并操作类的对象。在Java中,反射机制提供了强大的能力,包括在运行时检查类的结构、创建对象实例、调用方法以及访问和修改字段值。...
4. **访问字段**:`Field`类提供了获取和设置字段值的方法,如`getField()`、`get()`和`set()`。 5. **调用方法**:`Method`类允许我们调用对象的方法,包括静态和非静态方法,通过`getMethod()`或`...
Java反射技术是Java编程语言中的一个强大工具,它允许程序在运行时检查并操作类、接口、对象等的内部信息,包括但不限于类名、方法名、参数类型以及字段。通过反射,开发者可以实现动态调用方法、访问私有成员、创建...
为了准确评估Java反射的性能,我们设计了一系列基准测试,涵盖了反射操作的各个方面,如动态创建对象、设置和获取字段值、调用方法等。测试环境为标准的Java开发环境,采用最新的JDK版本,以确保结果的可靠性和...