`
yuanzher
  • 浏览: 30915 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

【转】通过java反射获取任意对象的字段名及字段值

    博客分类:
  • java
 
阅读更多
import java.lang.reflect.Field;

public class ReflectClass3 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Person p = new Person(1, "ctl", true, 'c', 2.0f, 2.0, 1L, (short) 1,
				(byte) 1);

		p.setId(0);
		p.setName("张三");
		p.setIsMen(true);
		p.setCh('c');
		p.setFloat_(2.0f);
		p.setDouble_(3.0);
		p.setLong_(2l);
		p.setShort_((short) 1);
		p.setByte_((byte) 2);
		reflect(p);
	}

	public static void reflect(Object obj) {
		if (obj == null)
			return;
		Field[] fields = obj.getClass().getDeclaredFields();
		String[] types1={"int","java.lang.String","boolean","char","float","double","long","short","byte"};
		String[] types2={"Integer","java.lang.String","java.lang.Boolean","java.lang.Character","java.lang.Float","java.lang.Double","java.lang.Long","java.lang.Short","java.lang.Byte"};
		for (int j = 0; j < fields.length; j++) {
			fields[j].setAccessible(true);
			// 字段名
		  System.out.print(fields[j].getName() + ":");
			// 字段值
			for(int i=0;i<types1.length;i++){
				if(fields[j].getType().getName()
						.equalsIgnoreCase(types1[i])|| fields[j].getType().getName().equalsIgnoreCase(types2[i])){
					try {
						System.out.print(fields[j].get(obj)+"     ");
					} catch (Exception e) {
						e.printStackTrace();
					} 
				}
			}
		}
	}
}

public class Person {
public int id;
public String name;
public boolean isMen;
public Character ch;
public Float float_;
public Double double_;
public Long long_;
public Short short_;
public Byte byte_;
public int getId() {
	return id;
}
public void setId(int id) {
	this.id = id;
}
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public boolean getIsMen() {
	return isMen;
}
public void setIsMen(boolean isMen) {
	this.isMen = isMen;
}
public Character getCh() {
	return ch;
}
public void setCh(Character ch) {
	this.ch = ch;
}
public Float getFloat_() {
	return float_;
}
public void setFloat_(Float float_) {
	this.float_ = float_;
}
public Double getDouble_() {
	return double_;
}
public void setDouble_(Double double_) {
	this.double_ = double_;
}
public Long getLong_() {
	return long_;
}
public void setLong_(Long long_) {
	this.long_ = long_;
}
public Short getShort_() {
	return short_;
}
public void setShort_(Short short_) {
	this.short_ = short_;
}
public Byte getByte_() {
	return byte_;
}
public void setByte_(Byte byte_) {
	this.byte_ = byte_;
}
public Person(int id, String name, Boolean isMen, Character ch, Float float_,
		Double double_, Long long_, Short short_, Byte byte_) {
	super();
	this.id = id;
	this.name = name;
	this.isMen = isMen;
	this.ch = ch;
	this.float_ = float_;
	this.double_ = double_;
	this.long_ = long_;
	this.short_ = short_;
	this.byte_ = byte_;
	}

public Person() {
	super();
}
}

 

分享到:
评论

相关推荐

    Java方法反射调用demo

    Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个特性使得Java具有了高度的灵活性,常用于框架开发、插件系统、元编程等...

    java反射机制文档及代码

    `获取字段,`field.set(object, value)`用于设置字段值,`field.get(object)`则用于获取字段值。对于私有字段,需要使用`setAccessible(true)`来解除访问限制。 4. **接口的实现与枚举的处理**:反射也可以处理接口...

    java反射原理及作用

    首先,`owner.getClass()` 获取对象的类信息,然后使用 `getField()` 方法根据字段名获取该字段。最后通过 `field.get(owner)` 调用来获取该字段的值。 #### 2. 获取静态字段值 ```java public Object ...

    使用Java反射机制将Map转换为Java对象,支持Boolean、Date类型

    在本主题中,我们将深入探讨如何使用Java反射机制将Map转换为Java对象,同时支持Boolean和Date类型的数据。这种转换在处理JSON到对象的映射或者数据库查询结果到对象的映射时非常有用。 首先,我们需要了解Java中的...

    Java反射demo

    可以通过`Class`对象的`getDeclaredFields()`或`getFields()`方法获取类的字段,然后使用`Field`对象的`set()`和`get()`方法来设置或获取字段值。 6. **调用方法**: `Method`类代表类的方法。使用`Class....

    Java反射机制(推荐)

    5. **访问字段**:通过Field对象,我们可以读取或修改类的字段值。`getField()`方法获取公共字段,`getDeclaredField()`获取所有字段,包括私有和受保护的。`set()`和`get()`方法分别用于设置和获取字段值。 6. **...

    Java反射之通过反射获取一个对象的方法信息(实例代码)

    Java反射是Java语言提供的一种强大的能力,允许程序在运行时检查和操作类、接口、对象以及它们的方法和字段。在上述实例中,我们探讨了如何使用反射来获取一个对象的方法信息。以下是关于Java反射和获取对象方法信息...

    java反射与泛型综合例子

    Java反射是Java语言提供的一种能力,允许运行中的程序动态地获取类的信息(如类名、方法名、参数类型等)并调用这些方法。反射机制的核心类包括`Class`、`Constructor`、`Method`和`Field`,它们分别代表类、构造器...

    Java反射机制Demo

    此方法通过`getDeclaredFields`获取类的所有字段(包括私有和受保护的字段),并打印出每个字段的修饰符、类型及字段名。 #### 四、Java反射机制的应用场景 1. **动态代理**:如JDK动态代理和CGLIB动态代理。 2. *...

    java反射机制详解与应用

    Java反射机制是Java语言的一项强大功能,它允许程序在运行时动态地获取类的信息并操作类的对象。这一特性使得Java具有高度的灵活性和强大的扩展性,尤其是在开发框架和库时,反射机制起到了至关重要的作用。本文将...

    JAVA反射

    通过Class对象,我们可以获取到类的构造器、方法、字段等信息。通常,我们可以通过以下三种方式获取Class对象: - 使用`Class.forName(String className)`,传入类的全限定名。 - 调用对象的`getClass()`方法。 -...

    Java反射机制.pptx

    - `obj.getClass()`: 通过对象获取其对应的Class对象。 - `Class.forName()`: 通过类名字符串动态加载Class对象,可能会抛出`ClassNotFoundException`。 - `MyClass.class`: 直接通过类名获取Class对象,这种方式...

    Java反射类中属性方法

    - `getDeclaredField(String name)`:根据字段名获取任意字段,包括私有和受保护的。 2. **调用类的方法(Methods)** - `getMethods()`:返回所有公共方法,包括继承自超类的方法。 - `getDeclaredMethods()`:...

    java反射机制详解

    ### Java反射机制详解 #### 一、反射机制是什么 反射机制是Java编程语言的一个核心特性,它允许程序在运行时动态地获取类的信息,并且能够动态地创建对象和调用对象的方法。简单来说,反射机制使得Java程序可以...

    java反射知识总结

    3. **通过实例对象获取**:`Class&lt;?&gt; clazz = 实例对象.getClass();` #### 三、反射的核心思想 反射的核心思想在于动态获取信息并动态调用对象的方法。具体包括以下几点: 1. **动态创建对象**:可以通过反射机制...

    Java反射经典实例 Java Reflection Cookbook[1].pdf

    注意,由于是静态字段,因此可以直接通过类的`Class`对象获取其值。 ##### 3.3 执行某对象的方法 ```java public Object invokeMethod(Object owner, String methodName, Object[] args) throws Exception { ...

    java r反射源代码

    我们可以通过反射创建类的实例,调用方法,甚至修改字段值,这在处理动态加载的类或者进行元编程时非常有用。 3. 方法的反射: Method类表示类的方法,它提供了一系列方法来获取方法信息,如方法名、返回类型、...

    java中反射知识总结

    - 访问字段:Field对象提供了设置和获取对象字段值的能力,包括私有字段。 - 实现动态代理:反射可以创建动态代理类,用于实现接口并提供拦截器,如Java的Proxy和InvocationHandler。 - 反编译查看字节码:通过...

    java-reflection-Xiangjie.rar_java 反射

    Java反射是Java编程语言中的一个强大工具,它允许程序在运行时检查类、接口、字段和方法的信息,并能动态地创建对象和调用方法。在深入理解Java反射之前,我们首先要明白什么是反射机制。反射机制是指在运行状态中,...

    fanshe_JAVA.zip_java 反射

    Java反射是Java编程语言中的一个核心特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射机制主要涉及类的动态加载、对象的动态创建以及方法的动态调用等。这个名为"fanshe_...

Global site tag (gtag.js) - Google Analytics