Field类及相关类解读

Field类及相关类解读

一、简介

这里介绍java反射中常用的Fied字段。

二、Field类结构

2.1 Field解释

Field完整类名为java.lang.reflect.Field,它提供类或接口中单独字段的信息,以及对单独字段的动态访问。在get或set操作时,Filed允许扩大转换,缩小转换会抛异常IllegalArgumentException。

2.2 Field定义
public final class Field extends AccessibleObject implements Member {
   }

涉及到接口Member和父类AccessibleObject。

2.2.1 Member

Member完整接口为java.lang.reflect.Member,是Field、Method、Constructor的父接口。定义如下:

public interface Member {
   
    public static final int PUBLIC = 0;
    public static final int DECLARED = 1;
	//其他方法略过,后续会介绍
}
2.2.2 AccessibleObject

AccessibleObject完整类为java.lang.reflect.AccessibleObject,定义如下:

package java.lang.reflect;
import java.security.AccessController;
import sun.reflect.Reflection;
import sun.reflect.ReflectionFactory;
import java.lang.annotation.Annotation;
//AccessibleObject是Field、Method和Constructor的基类,通过标识位控制访问权限
public class AccessibleObject implements AnnotatedElement {
   

    //静态方法,设置指定AccessibleObject数组对象是否可访问
    public static void setAccessible(AccessibleObject[] array, boolean flag)throws SecurityException {
   }

    //设置是否可通过反射访问,true:可以 false:不可以
    public void setAccessible(boolean flag) throws SecurityException {
   }
}

使用示例如下:

import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Field;
public class AccessibleObjectStudy {
   
    public String stuName = "apple";
    public static void main(String[] args) throws Exception {
   
        AccessibleObjectStudy obj = new AccessibleObjectStudy();

        Field nameField = obj.getClass().getDeclaredField("stuName");
        //初始状态为false,不可访问
        boolean isAccessible = nameField.isAccessible(); //false

        //通过静态方法,设置指定AccessibleObject数组对象是否可访问
        AccessibleObject.setAccessible(new Field[]{
   nameField}, true);
        isAccessible = nameField.isAccessible(); //true

        nameField.setAcce
  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值