资讯专栏INFORMATION COLUMN

Java反射-属性

buildupchao / 2992人阅读

摘要:使用反射可以检视类属性成员变量,并且可以在运行时。获得属性对象类是通过对象获得的。示例如下数组包含类定义所有公共属性实例。如属性是静态属性,应传给方法,以替代例子中的参数。

使用反射可以检视类属性(成员变量),并且可以在运行时get/set。这些是通过类java.lang.reflect.Field实现的。本文将详细介绍javaField对象。别忘了参考Sun的JavaDoc

获得属性对象

Field类是通过Class对象获得的。示例如下:

Class aClass = ...//obtain class object
Field[] fields = aClass.getFields();

Field[]数组包含类定义所有公共(public)属性实例。
如果你知道想访问的属性名称,可以使用下方代码:

Class  aClass = MyObject.class
Field field = aClass.getField("someField");

上诉示例将返回类MyObject定义的someField属性对应的Field实例,类似如下代码:

public class MyObject{
  public String someField = null;
}

如果给予getField()方法的参数不存在对应的属性,将抛出NoSuchFieldException

属性名称

如已有Field实例,可以通过Field.getName()方法获取属性名称,代码如下 :

Field field = ... //obtain field object
String fieldName = field.getName();
属性类型

可以使用Field.getType() 方法获取属性类型:

Field field = aClass.getField("someField");
Object fieldType = field.getType();
获取、设置属性值

一旦获得Field引用,可以使用Field.get()Field.set()方法获取或设置属性值,代码如下:

Class  aClass = MyObject.class
Field field = aClass.getField("someField");
MyObject objectInstance = new MyObject();
Object value = field.get(objectInstance);
field.set(objetInstance, value);

传给getset方法的objetInstance必须是拥有指定属性的一个类的实例。上例使用的是MyObject的实例,因为someField是类MyObject的一个变量。
如属性是静态属性(public static),应传nullgetset方法,以替代例子中的objectInstance参数。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/77252.html

相关文章

  • Java 反射教程

    摘要:反射非常强大和有用。另外,反射可以用在映射结果集的列名到对象的方法。本教程将深入介绍反射。本教程还将清除一些关于范型信息在运行时可用性的认知混淆。类对象使用反射时,起点通常是需要使用反射检视的类的对象。 Java反射可以在运行时检视类、接口、属性和方法,而无需在编译时知道类名、方法名等等。它也同样使用反射支持实例化新的对象、调用方法和get/set属性值。 Java反射非常强大和有用...

    klivitamJ 评论0 收藏0
  • Java知识点总结(反射-通过反射操作类的属性和方法 )

    摘要:知识点总结反射通过反射操作类的属性和方法知识点总结反射使用反射操作类的属性和方法通过反射调用构造方法,构造对象其实调用无参构造器张三调用有参构造器李四通过反射调用普通方法获取方法激活方法王武王武通过反射操作属性是属性,如果不写会这个私有属 Java知识点总结(反射-通过反射操作类的属性和方法 ) @(Java知识点总结)[Java, 反射] 使用反射操作类的属性和方法: import ...

    jlanglang 评论0 收藏0
  • 封装BeanMap以及java反射和内省

    摘要:所以,我实现了一个称为的类来应用反射。现在流行的语言大都支持反射。这组内省主要是针对类进行操作的,能够获取类的属性信息。可以看到,通过的内省机制,解决了的最关键的问题。在封装反射的时候,会充分考虑到各种情况。 BeanMap 学习具体的技术工具的好办法就是些Demo、造轮子。所以,我实现了一个称为BeanMap的类来应用java反射API。 这个BeanMap的功能是将一个Bean包装...

    张巨伟 评论0 收藏0
  • Java反射详细介绍

    摘要:通过反射获取带参无返回值成员方法并使用设置安全检查,访问私有构造函数必须创建实例这种不行,注意和方法需要传递参数测试复制这个功能获取私有方法,同样注意和的区别赋予访问权限调用方法。 反射 目录介绍 1.反射概述 1.1 反射概述 1.2 获取class文件对象的三种方式 1.3 反射常用的方法介绍 1.4 反射的定义 1.5 反射的组成 1.6 反射的作用有哪些 2.反射的...

    ingood 评论0 收藏0
  • Reflection:Java反射机制的应用场景

    近期在维护公司项目的时候遇到一个问题,因为实体类中的 set 方法涉及到了业务逻辑,因此在给对象赋值的过程中不能够使用 set 方法,为了实现功能,所以采用了反射的机制给对象属性赋值,借此机会也了解了反射的一些具体用法和使用场景,分以下两点对反射进行分析: 反射的优势和劣势 反射的应用场景 反射的优势和劣势   个人理解,反射机制实际上就是上帝模式,如果说方法的调用是 Java 正确的打开方式...

    浠ラ箍 评论0 收藏0
  • Java反射机制详解

    摘要:反射机制的应用实例在泛型为的中存放一个类型的对象。工厂模式可以参考现在我们利用反射机制实现工厂模式,可以在不修改工厂类的情况下添加任意多个子类。 学习交流群:669823128java 反射 定义 功能 示例概要:Java反射机制详解| |目录 1反射机制是什么 2反射机制能做什么 3反射机制的相关API 通过一个对象获得完整的包名和类名 实例化Class类对象 获取一个对象的父类与...

    paraller 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<