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反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个特性使得Java具有了高度的灵活性,常用于框架开发、插件系统、元编程等...
`获取字段,`field.set(object, value)`用于设置字段值,`field.get(object)`则用于获取字段值。对于私有字段,需要使用`setAccessible(true)`来解除访问限制。 4. **接口的实现与枚举的处理**:反射也可以处理接口...
首先,`owner.getClass()` 获取对象的类信息,然后使用 `getField()` 方法根据字段名获取该字段。最后通过 `field.get(owner)` 调用来获取该字段的值。 #### 2. 获取静态字段值 ```java public Object ...
在本主题中,我们将深入探讨如何使用Java反射机制将Map转换为Java对象,同时支持Boolean和Date类型的数据。这种转换在处理JSON到对象的映射或者数据库查询结果到对象的映射时非常有用。 首先,我们需要了解Java中的...
可以通过`Class`对象的`getDeclaredFields()`或`getFields()`方法获取类的字段,然后使用`Field`对象的`set()`和`get()`方法来设置或获取字段值。 6. **调用方法**: `Method`类代表类的方法。使用`Class....
5. **访问字段**:通过Field对象,我们可以读取或修改类的字段值。`getField()`方法获取公共字段,`getDeclaredField()`获取所有字段,包括私有和受保护的。`set()`和`get()`方法分别用于设置和获取字段值。 6. **...
Java反射是Java语言提供的一种强大的能力,允许程序在运行时检查和操作类、接口、对象以及它们的方法和字段。在上述实例中,我们探讨了如何使用反射来获取一个对象的方法信息。以下是关于Java反射和获取对象方法信息...
Java反射是Java语言提供的一种能力,允许运行中的程序动态地获取类的信息(如类名、方法名、参数类型等)并调用这些方法。反射机制的核心类包括`Class`、`Constructor`、`Method`和`Field`,它们分别代表类、构造器...
此方法通过`getDeclaredFields`获取类的所有字段(包括私有和受保护的字段),并打印出每个字段的修饰符、类型及字段名。 #### 四、Java反射机制的应用场景 1. **动态代理**:如JDK动态代理和CGLIB动态代理。 2. *...
Java反射机制是Java语言的一项强大功能,它允许程序在运行时动态地获取类的信息并操作类的对象。这一特性使得Java具有高度的灵活性和强大的扩展性,尤其是在开发框架和库时,反射机制起到了至关重要的作用。本文将...
通过Class对象,我们可以获取到类的构造器、方法、字段等信息。通常,我们可以通过以下三种方式获取Class对象: - 使用`Class.forName(String className)`,传入类的全限定名。 - 调用对象的`getClass()`方法。 -...
- `obj.getClass()`: 通过对象获取其对应的Class对象。 - `Class.forName()`: 通过类名字符串动态加载Class对象,可能会抛出`ClassNotFoundException`。 - `MyClass.class`: 直接通过类名获取Class对象,这种方式...
- `getDeclaredField(String name)`:根据字段名获取任意字段,包括私有和受保护的。 2. **调用类的方法(Methods)** - `getMethods()`:返回所有公共方法,包括继承自超类的方法。 - `getDeclaredMethods()`:...
### Java反射机制详解 #### 一、反射机制是什么 反射机制是Java编程语言的一个核心特性,它允许程序在运行时动态地获取类的信息,并且能够动态地创建对象和调用对象的方法。简单来说,反射机制使得Java程序可以...
3. **通过实例对象获取**:`Class<?> clazz = 实例对象.getClass();` #### 三、反射的核心思想 反射的核心思想在于动态获取信息并动态调用对象的方法。具体包括以下几点: 1. **动态创建对象**:可以通过反射机制...
注意,由于是静态字段,因此可以直接通过类的`Class`对象获取其值。 ##### 3.3 执行某对象的方法 ```java public Object invokeMethod(Object owner, String methodName, Object[] args) throws Exception { ...
我们可以通过反射创建类的实例,调用方法,甚至修改字段值,这在处理动态加载的类或者进行元编程时非常有用。 3. 方法的反射: Method类表示类的方法,它提供了一系列方法来获取方法信息,如方法名、返回类型、...
- 访问字段:Field对象提供了设置和获取对象字段值的能力,包括私有字段。 - 实现动态代理:反射可以创建动态代理类,用于实现接口并提供拦截器,如Java的Proxy和InvocationHandler。 - 反编译查看字节码:通过...
Java反射是Java编程语言中的一个强大工具,它允许程序在运行时检查类、接口、字段和方法的信息,并能动态地创建对象和调用方法。在深入理解Java反射之前,我们首先要明白什么是反射机制。反射机制是指在运行状态中,...
Java反射是Java编程语言中的一个核心特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射机制主要涉及类的动态加载、对象的动态创建以及方法的动态调用等。这个名为"fanshe_...