`

Field 反射

阅读更多

java.lang.reflect
类 Field

java.lang.Object 继承者 java.lang.reflect.AccessibleObject  继承者 java.lang.reflect.Field
所有已实现的接口:
AnnotatedElement, Member

public final class Field
extends AccessibleObject
implements Member

Field 提供有关类或接口的单个字段的信息,以及对它的动态访问权限。反射的字段可能是一个类(静态)字段或实例字段。

Array 允许在执行 get 或 set 访问操作期间进行扩展转换,但如果将发生收缩转换,则抛出一个IllegalArgumentException

另请参见:
MemberClassClass.getFields()Class.getField(String)Class.getDeclaredFields(),Class.getDeclaredField(String)

字段摘要
  从接口 java.lang.reflect.Member 继承的字段
DECLARED, PUBLIC
  方法摘要
 boolean equals(Object obj)
          将此 Field 与指定对象比较。
 Object get(Object obj)
          返回指定对象上此 Field 表示的字段的值。
<T extends Annotation> 
T
getAnnotation(Class<T> annotationClass)
          如果存在该元素的指定类型的注释,则返回这些注释,否则返回 null。
 boolean getBoolean(Object obj)
          获得一个静态或实例 boolean 字段的值。
 byte getByte(Object obj)
          获得一个静态或实例 byte 字段的值。
 char getChar(Object obj)
          获得 char 类型或另一个通过扩展转换可以转换为 char 类型的基本类型的静态或实例字段的值。
 Annotation[] getDeclaredAnnotations()
          返回直接存在于此元素上的所有注释。
 Class<?> getDeclaringClass()
          返回表示类或接口的 Class 对象,该类或接口声明由此 Field 对象表示的字段。
 double getDouble(Object obj)
          获得 double 类型或另一个通过扩展转换可以转换为 double 类型的基本类型的静态或实例字段的值。
 float getFloat(Object obj)
          获得 float 类型或另一个通过扩展转换可以转换为 float 类型的基本类型的静态或实例字段的值。
 Type getGenericType()
          返回一个 Type 对象,它表示此 Field 对象所表示字段的声明类型。
 int getInt(Object obj)
          获得 int 类型或另一个通过扩展转换可以转换为 int 类型的基本类型的静态或实例字段的值。
 long getLong(Object obj)
          获得 long 类型或另一个通过扩展转换可以转换为 long 类型的基本类型的静态或实例字段的值。
 int getModifiers()
          以整数形式返回由此 Field 对象表示的字段的 Java 语言修饰符。
 String getName()
          返回此 Field 对象表示的字段的名称。
 short getShort(Object obj)
          获得 short 类型或另一个通过扩展转换可以转换为 short 类型的基本类型的静态或实例字段的值。
 Class<?> getType()
          返回一个 Class 对象,它标识了此 Field 对象所表示字段的声明类型。
 int hashCode()
          返回该 Field 的哈希码。
 boolean isEnumConstant()
          如果此字段表示枚举类型的元素,则返回 true;否则返回 false
 boolean isSynthetic()
          如果此字段是复合字段,则返回 true;否则返回 false
 void set(Object obj, Object value)
          将指定对象变量上此 Field 对象表示的字段设置为指定的新值。
 void setBoolean(Object obj, boolean z)
          将字段的值设置为指定对象上的一个 boolean 值。
 void setByte(Object obj, byte b)
          将字段的值设置为指定对象上的一个 byte 值。
 void setChar(Object obj, char c)
          将字段的值设置为指定对象上的一个 char 值。
 void setDouble(Object obj, double d)
          将字段的值设置为指定对象上的一个 double 值。
 void setFloat(Object obj, float f)
          将字段的值设置为指定对象上的一个 float 值。
 void setInt(Object obj, int i)
          将字段的值设置为指定对象上的一个 int 值。
 void setLong(Object obj, long l)
          将字段的值设置为指定对象上的一个 long 值。
 void setShort(Object obj, short s)
          将字段的值设置为指定对象上的一个 short 值。
 String toGenericString()
          返回一个描述此 Field(包括其一般类型)的字符串。
 String toString()
          返回一个描述此 Field 的字符串。
  从类 java.lang.reflect.AccessibleObject 继承的方法
getAnnotations, isAccessible, isAnnotationPresent, setAccessible, setAccessible

 二.使用:

   1.拿到类的属性和设置属性值。

 比如 有一个User类

     Class clazz=Class.forName("com.testBean.User");////得到类对象
    Object bean=clazz..newInstance();//实例化该类。
   a)//解析属性信息
   Field[] fs=clazz.getDeclaredFields();
   
for(int i = 0 ; i < fs.length; i++){

           Field f = fs[i];

           f.setAccessible(true); //设置些属性是可以访问的

           Object val = f.get(bean);//得到此属性的值   

           System.out.println("name:"+f.getName()+", value = "+val);
           f.set(bean,"12") ;        //给属性设值

  b)//解析方法信息
   Method[] methodlist=cla.getDeclaredMethods();

   c)得到指定的属性,并给该属性设置值。

        Field field = clazz.getDeclaredField("userName");

         field.setAccessible(true);
         field.set(bean, "张三");

    未完待续.

分享到:
评论

相关推荐

    反射之 操作 Field 成员变量类以及反射授权.md

    反射之 操作 Field 成员变量类以及反射授权.md

    java反射组件——Field

    ### Java反射机制之Field组件详解 #### 一、引言 在Java开发中,反射机制是一种非常强大的工具,它能够让我们在运行时获取类的信息并操纵对象的状态。Field作为Java反射机制的重要组成部分之一,主要用于获取类中...

    Field-II.zip_Field II 仿真_Field_II仿真_beguniux_field-ii_声场仿真

    Field II 是一个专业的声场仿真软件,主要用于超声波成像和声学研究。这个压缩包包含了一系列与Field II仿真相关的文件,让我们一一解析其中的知识点。 首先,"kidney_cut.bmp" 可能是一个示例图像,展示了肾脏的切...

    Java反射之Constructor、Method、Field使用及说明

    在深入探讨Java反射机制中`Constructor`、`Method`、`Field`以及`Class`类的使用之前,我们需要先了解反射的基本概念及其重要性。反射是Java的一项强大功能,它允许程序在运行时检查类和对象的结构,甚至可以创建和...

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

    Java反射是Java编程语言中的一个强大工具,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射主要用于在运行时分析类和对象,包括访问私有成员、调用私有方法、创建动态代理等。...

    反射机制反射Dao 反射机制

    反射机制的核心在于`java.lang.reflect`包中的类,如Class、Constructor、Method和Field。标题"反射机制反射Dao"暗示我们将探讨如何使用反射与数据访问对象(DAO)模式相结合。 反射机制允许程序在运行时动态地获取...

    运用注解改变反射之后类属性的顺序

    默认情况下,Java反射API(如`Field[] getDeclaredFields()`方法)返回的字段数组顺序与它们在源代码中的声明顺序一致。在某些场景下,如序列化或JSON转换,我们可能需要控制这些属性的顺序。 为了解决这个问题,...

    java反射 java反射 java反射java反射

    Java反射是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并操作类的对象。在Java中,反射机制提供了强大的能力,包括在运行时检查类的结构、创建对象实例、调用方法以及访问和修改字段值。...

    Java自定义注解使用反射获取字段注解

    本文将深入探讨如何通过反射机制来获取自定义注解以及其在字段上的应用。 首先,我们需要了解什么是自定义注解。自定义注解是以`@`开头,后跟自定义的名称。定义一个注解的基本结构如下: ```java import java....

    11.1、反射 Field propeties 解析xml1

    通过`field.setAccessible(true)`确保可以访问私有字段,然后使用`field.get()`和`field.set()`来获取和设置值。 总结来说,这个示例展示了如何结合Java反射和配置文件解析XML数据,将其映射到Java对象中。这种方法...

    java反射-英文版反射规范

    ### Java反射机制详解 #### 一、概述 Java反射机制是一种强大的编程技术,它允许运行时检查类的信息并操作对象的内部结构。本篇将基于Sun公司的官方文档《Java™ Core Reflection API and Specification》(1997年...

    fieldII超声波束形成仿真

    Field II是一款广泛应用于超声波束形成仿真领域的专业软件,由丹麦技术大学的Jesper Jensen教授开发。这个软件包主要用于研究和设计超声成像系统,包括探头、声束聚焦、散射以及多普勒效应等关键特性。在本文中,...

    field ii 肾脏成像

    这些参数对于理解RF脉冲如何在肾脏内部传播至关重要,进而影响到MRI信号的产生和超声波的反射。通过调整和优化这些参数,可以模拟出更接近实际临床情况的成像结果。 肾脏模型文件是Field II进行肾脏成像研究的基础...

    反射实例-JAVA反射机制

    - **获取字段**:`Field getField(String name)`用于获取类的指定字段。 - **获取方法**:`Method getMethod(String name, Class... parameterTypes)`用于获取类的指定方法。 这些方法使得开发者可以在运行时动态地...

    JAVA 反射机制应用

    - 使用缓存,如使用WeakHashMap存储已经反射得到的Field、Method或Constructor对象,避免重复查找。 - 避免反射调用敏感方法,如修改final字段或私有成员,除非明确知道这样做是安全的。 总之,Java反射机制为...

    Java反射经典实例

    Java反射是Java编程语言中的一个强大特性,它允许运行时的程序访问并操作类、接口、字段和方法等信息,即使这些信息在编译时并未明确知晓。在Java中,反射通常通过`java.lang.Class`类和相关的API来实现。本实例将...

    反射修改私有成员变量例子

    Java 反射机制修改私有成员变量实例 Java 反射机制是 Java 语言中一个强大的工具,它允许程序在运行时检查和修改类的结构和行为。在本例中,我们将使用 Java 反射机制来修改私有成员变量的值。 什么是 Java 反射...

    你可以看到这个类对属性的存取方法(getter and setter method)使用了标准JavaBean命名约定,同时把类属性(field)的访问级别设成私有的(private)。这是推荐的设计,但并不是必须的。Hibernate也可以直接访问这些field,而使用访问方法(accessor method)的好处是提供了重构时的健壮性(robustness)。为了通过反射机制(Reflection)来实例化\

    你可以看到这个类对属性的存取方法(getter and setter method)使用了标准JavaBean命名约定,同时...为了通过反射机制(Reflection)来实例化这个类的对象,我们需要提供一个无参的构造器(no-argument constructor)。

    Java反射演示Demo

    要使用反射,我们需要导入java.lang.reflect包中的几个关键类:Class、Constructor、Method和Field。Class对象代表运行时的类,它是所有类的基类。我们可以通过以下方式获取Class对象: ```java Class&lt;?&gt; clazz = ...

    Field_II_PC7.zip_B超声波的检测系统程序_Field II_field 超声_field 超声波

    Field_II是一款强大的超声波仿真与检测系统软件,它在MATLAB环境中运行,为用户提供了一个先进的平台来模拟和分析超声波传播、反射以及散射等现象。这个压缩包"Field_II_PC7.zip"包含了该软件的一个版本,特别针对...

Global site tag (gtag.js) - Google Analytics