我是靠谱客的博主 拼搏大叔,最近开发中收集的这篇文章主要介绍java.lang.reflect.Field类,即--Field类?及常用方法?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

java.lang.reflect.Field

1、Field类:主要是用来辅助 获取和操作 类的属性。

                    为我们提供了获取当前对象的成员变量的 全部属性信息和重新设值 的方法。

                    利用类型类反射该类型中的所有属性和方法

2、Field类的实例:描述了 类型类 的全部属性信息。

                           (包括:属性名称字段、属性类型、属性修饰符、属性注解 等等)

备注:类型类 --是指代表一个 类型 的类。比如说对象是你我他,那你我他 类型的类就是“人”。

3、应用获取类的属性信息

思路--先获得某个对象的 类型类对象,然后借此获取Field类的实例,最后调用Field类的方法获取属性

①获得类型类

Java中一切都是对象,一般所使用的对象都直接或间接继承自Object类。

Object类中包含一个方法名叫getClass(),利用这个方法就可以获得一个类型类的实例对象。

示例:Object obj = new Object();

所有的类型类都是Class类的实例-->Class clazz = obj.getClass();

另外一种写法,Object.class(注意是大写的O,obj.getClass()==Object.class)

在Java中表示一个特定类型的类型类可以用“类型.class”的方式获得。(即,Object.class)

注意--类型类是一一对应的,父类的类型类和子类的类型类是不同的。

②借此获取Field类的实例

clazz 是Class类的实例,直接调用Class中提供了4个相关的方法就OK。

(冒号后面的是方法返回的类型)

getField(String name):Field---用于返回一个指定名称的属性,但是这个属性必须是公有的,

                                               这个属性可以在父类中定义。如果是私有属 性或者是保护属

                                               性,那么都会抛出异常提示找不到这个属性。

getFields():Field[]---是返回类型中的所有公有属性,所有的私有属性和保护属性都找不到。

getDeclaredField(String name):Field---获得在这个类型的声明中定义的指定名称的属性,

                                                              这个属性必须是在这个类型的声明中定义,但可以

                                                              使私有和保护的。

getDeclaredFields():Field[]---获得在这个类型的声明中定义的所有属性,包括私有和保护的

                                              属性都会被返回,但是所有父类的属性都不会被返回。

③调用Field类的方法获取属性

getType():Class---获得该属性的类型。

getName():String---获得属性名称。

isAccessible():boolean---判断该属性是否是可以访问,通常私有和保护的类型都是不可以访问。

setAccessible(boolean flag)---设置该属性是否可以访问

field.setAccessibe(true)属性可以访问--即获取访问权限(field是Field类的实例)

isArray():boolean---判断该类型是否是数组。

isEnum():boolean---判断该类型是否是枚举类型。

isInterface():boolean---判断该类型是否是接口。

isPrimitive():boolean---判断该类型是否是基本类型。

getSuperClass():Class---获得该类型的直接父类,若没有直接父类,那么返回null。

getInterfaces():Class[]---获得该类型实现的所有接口。

getComponentType():Class---如果该类型是一个数组,那么返回该数组的组件类型。

4、异常

IllegalAccessException - Field对象正在执行Java语言访问控制,并且底层字段无法访问。

IllegalArgumentException - 指定的对象不是声明底层字段(或其子类或实现者)的类或接口的实例。

NullPointerException - 指定的对象为null,该字段为实例字段。

ExceptionInInitializerError - 由此方法引发的初始化失败。

5、扩展:Java中所有的属性信息都用Field表示,所有的方法信息都用Method表示,

                这两个类都是java.lang.reflect包中的类。

6、若对你有所帮助请点个赞。

最后

以上就是拼搏大叔为你收集整理的java.lang.reflect.Field类,即--Field类?及常用方法?的全部内容,希望文章能够帮你解决java.lang.reflect.Field类,即--Field类?及常用方法?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部