java field 字段类型_Java Field类

首页 > 基础教程 > 反射 > Reflection API

Java Field类

Field是一个类,位于Java.lang.reflect包下,在Java反射中Field用于获取某个类的属性或该属性的属性值。

获取Field类对象

1. Class.getDeclaredField(String name);

返回一个 Field 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明字段(包括私有成员)。

2. Class.getDeclaredFields();

返回 Field 对象的一个数组,该数组包含此 Class 对象所表示的类或接口所声明的所有字段(包括私有成员)。

3. Class.getField(String name);

返回一个 Field 对象,它反映此 Class 对象所表示的类或接口的指定公共成员字段。

4. Class.getFields();

返回一个包含某些 Field 对象的数组,该数组包含此 Class 对象所表示的类或接口的所有可访问公共字段。

主要方法

getType(): 获取属性声明时类型对象(返回class对象)

getName() : 获取属性声明时名字

getAnnotations() : 获得这个属性上所有的注释

getModifiers() : 获取属性的修饰

isEnumConstant() : 判断这个属性是否是枚举类

isSynthetic() : 判断这个属性是否是 复合类

get(Object obj): 取得obj对象这个Field上的值

例子

//Person.java

public class Person{

public String name;

private Integer age;

private String sex;

//省略所有属性的set、get方法

package com.mao.test;

import java.lang.reflect.Field;

public class Test

{

public static void main(String[]args) throws NoSuchFieldException, SecurityException

{

Person person =new Person();

//通过Class.getDeclaredField(String name)获取类或接口的指定已声明字段。

Field f1=person.getClass().getDeclaredField("name");

System.out.println("-----Class.getDeclaredField(String name)用法-------");

System.out.println(f1);

System.out.println("-----Class.getDeclaredFields()用法-------");

//通过Class.getDeclaredFields()获取类或接口的指定已声明字段。

Field []f2=person.getClass().getDeclaredFields();

for(Field field:f2)

{

System.out.println(field);

}

System.out.println("-----Class.getField(String name)用法-------");

//通过Class.getField(String name)返回一个类或接口的指定公共成员字段,私有成员报错。

Field f3=person.getClass().getField("name");

System.out.println(f3);

//如果获取age属性(私有成员) 则会报错

//Field f3=person.getClass().getField("name");

System.out.println("-----Class.getFields()用法-------");

//通过Class.getField(),返回 Class 对象所表示的类或接口的所有可访问公共字段。

Field []f4=person.getClass().getFields();

for(Field fields:f4)

{

//因为只有name属性为共有,因此只能遍历出name属性

System.out.println(fields);

}

}

}

运行结果:

-----Class.getDeclaredField(String name)用法-------

public java.lang.String com.mao.test.Person.name

-----Class.getDeclaredFields()用法-------

public java.lang.String com.mao.test.Person.name

private java.lang.Integer com.mao.test.Person.age

private java.lang.String com.mao.test.Person.sex

-----Class.getField(String name)用法-------

public java.lang.String com.mao.test.Person.name

-----Class.getFields()用法-------

public java.lang.String com.mao.test.Person.name

总结

Field类中最常用的是get(Object obj)和set(Object obj, Object value)这两个方法,所以这两个方法是最重要的。

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值