import java.lang.reflect.Field; /** * * @author luckystar2008 * */ public class ReflectClass { /** * @param args */ public static void main(String[] args) { Person p = new Person(); p.setId(0); p.setName("张三"); reflect(p); } public static void reflect(Object obj) { if (obj == null) return; Field[] fields = obj.getClass().getDeclaredFields(); for (int j = 0; j < fields.length; j++) { fields[j].setAccessible(true); // 字段名 System.out.print(fields[j].getName() + ","); // 字段值 if (fields[j].getType().getName().equals( java.lang.String.class.getName())) { // String type try { System.out.print(fields[j].get(obj)); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else if (fields[j].getType().getName().equals( java.lang.Integer.class.getName()) || fields[j].getType().getName().equals("int")) { // Integer type try { System.out.println(fields[j].getInt(obj)); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } } // 其他类型。。。 } System.out.println(); } } class Person { private int id; private String name; public int getId() { return this.id; } public void setId(int id) { this.id = id; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } }
结果:
id,0
name,张三
相关推荐
Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个特性使得Java具有了高度的灵活性,常用于框架开发、插件系统、元编程等...
在本资料"java反射机制文档及代码"中,详细介绍了Java反射的基础知识和常见应用。 首先,反射的核心类是`java.lang.Class`,它代表了运行时的类信息。通过Class对象,我们可以获取到类的名称、包名、属性、构造器、...
首先,`owner.getClass()` 获取对象的类信息,然后使用 `getField()` 方法根据字段名获取该字段。最后通过 `field.get(owner)` 调用来获取该字段的值。 #### 2. 获取静态字段值 ```java public Object ...
这种能力使得Java开发者能够在运行时动态地获取类的信息(如类名、方法名、参数类型等)并调用这些方法,甚至创建对象,而无需在编译时就确定具体类的实例。Java反射机制为软件提供了更大的灵活性和可扩展性,尤其在...
可以通过`Class`对象的`getDeclaredFields()`或`getFields()`方法获取类的字段,然后使用`Field`对象的`set()`和`get()`方法来设置或获取字段值。 6. **调用方法**: `Method`类代表类的方法。使用`Class....
此方法通过`getDeclaredFields`获取类的所有字段(包括私有和受保护的字段),并打印出每个字段的修饰符、类型及字段名。 #### 四、Java反射机制的应用场景 1. **动态代理**:如JDK动态代理和CGLIB动态代理。 2. *...
Java反射是Java语言提供的一种能力,允许运行中的程序动态地获取类的信息(如类名、方法名、参数类型等)并调用这些方法。反射机制的核心类包括`Class`、`Constructor`、`Method`和`Field`,它们分别代表类、构造器...
Java反射机制是Java语言的一项强大功能,它允许程序在运行时动态地获取类的信息并操作类的对象。这一特性使得Java具有高度的灵活性和强大的扩展性,尤其是在开发框架和库时,反射机制起到了至关重要的作用。本文将...
通过Class对象,我们可以获取到类的构造器、方法、字段等信息。通常,我们可以通过以下三种方式获取Class对象: - 使用`Class.forName(String className)`,传入类的全限定名。 - 调用对象的`getClass()`方法。 -...
### Java反射机制详解 #### 一、反射机制是什么 反射机制是Java编程语言的一个核心特性,它允许程序在运行时动态地获取类的信息,并且能够动态地创建对象和调用对象的方法。简单来说,反射机制使得Java程序可以...
例如,可以获取任意对象的属性并改变其值,调用任意对象的方法,甚至实例化未知类型的对象。这使得动态装配和降低代码耦合成为可能,同时也为实现动态代理提供了基础。 2. **Why: 为什么需要Java反射** 反射机制的...
- `getDeclaredField(String name)`:根据字段名获取任意字段,包括私有和受保护的。 2. **调用类的方法(Methods)** - `getMethods()`:返回所有公共方法,包括继承自超类的方法。 - `getDeclaredMethods()`:...
Java反射是Java语言提供的一种强大的能力,允许程序在运行时检查和操作类、接口、对象以及它们的方法和字段。在上述实例中,我们探讨了如何使用反射来获取一个对象的方法信息。以下是关于Java反射和获取对象方法信息...
- 访问字段:Field对象提供了设置和获取对象字段值的能力,包括私有字段。 - 实现动态代理:反射可以创建动态代理类,用于实现接口并提供拦截器,如Java的Proxy和InvocationHandler。 - 反编译查看字节码:通过...
通过Field对象,我们可以获取字段的类型、名字,甚至在运行时设置或获取字段的值。这在处理私有字段或者在不修改源码的情况下修改对象状态时特别有用。 5. 注解的反射: Java反射也支持注解的处理。通过...
注意,由于是静态字段,因此可以直接通过类的`Class`对象获取其值。 ##### 3.3 执行某对象的方法 ```java public Object invokeMethod(Object owner, String methodName, Object[] args) throws Exception { ...
### Java反射知识总结 #### 一、反射的概念与意义 反射是Java中一项非常重要的特性,它允许程序在运行时动态地获取类的信息,并且能够动态地创建对象、调用方法等。这种能力使得Java程序具有了极大的灵活性,特别...
Java反射是Java编程语言中的一个核心特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射机制主要涉及类的动态加载、对象的动态创建以及方法的动态调用等。这个名为"fanshe_...
Java反射是Java编程语言中的一个强大工具,它允许程序在运行时检查类、接口、字段和方法的信息,并能动态地创建对象和调用方法。在深入理解Java反射之前,我们首先要明白什么是反射机制。反射机制是指在运行状态中,...
在本主题中,我们将深入探讨如何使用Java反射机制将Map转换为Java对象,同时支持Boolean和Date类型的数据。这种转换在处理JSON到对象的映射或者数据库查询结果到对象的映射时非常有用。 首先,我们需要了解Java中的...