您的位置 首页 > 德语词汇

newfield是什么意思?用法、例句,Field类及相关类解读

很多朋友对于newfield是什么意思?用法、例句和Field类及相关类解读不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!

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

newfield是什么意思?用法、例句,Field类及相关类解读

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

publicfinalclassFieldextendsAccessibleObjectimplementsMember{}

涉及到接口Member和父类AccessibleObject。

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

publicstaticfinalintDECLARED=1;

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

importjava.security.AccessController;

importsun.reflect.ReflectionFactory;

importjava.lang.annotation.Annotation;

//AccessibleObject是Field、Method和Constructor的基类,通过标识位控制访问权限

publicclassAccessibleObjectimplementsAnnotatedElement{

//静态方法,设置指定AccessibleObject数组对象是否可访问

publicstaticvoidsetAccessible(AccessibleObject[]array,booleanflag)throwsSecurityException{}

//设置是否可通过反射访问,true:可以false:不可以

publicvoidsetAccessible(booleanflag)throwsSecurityException{}

importjava.lang.reflect.AccessibleObject;

importjava.lang.reflect.Field;

publicclassAccessibleObjectStudy{

publicStringstuName="apple";

publicstaticvoidmain(String[]args)throwsException{

AccessibleObjectStudyobj=newAccessibleObjectStudy();

FieldnameField=obj.getClass().getDeclaredField("stuName");

booleanisAccessible=nameField.isAccessible();//false

//通过静态方法,设置指定AccessibleObject数组对象是否可访问

AccessibleObject.setAccessible(newField[]{nameField},true);

isAccessible=nameField.isAccessible();//true

nameField.setAccessible(false);

isAccessible=nameField.isAccessible();//false

//Field提供类或接口中单独字段的信息,以及对单独字段的动态访问。

//在get或set操作时,Filed允许扩大转换,缩小转换会抛异常IllegalArgumentException

publicfinalclassFieldextendsAccessibleObjectimplementsMember{

publicClass<?>getDeclaringClass(){}

//返回字段修饰符的int表示(如public,详情见Modifiers类)

//字段是否是枚举类型的一个元素

publicbooleanisEnumConstant(){}

publicClass<?>getType(){}

//当两个字段由相同的类声明,且有相同的名称和Type,则相等

publicbooleanequals(Objectobj){}

//返回hashcode,其由声明类名和字段名通过异或计算而得

//返回字段描述(包含它的泛型类型)

publicStringtoGenericString(){}

//返回字段在指定对象中的值,如果字段是静态字段,则可以传null

publicObjectget(Objectobj)throwsIllegalArgumentException,IllegalAccessException{}

//返回字段在指定对象中的值,如果字段是静态字段,则可以传null

publicbooleangetBoolean(Objectobj)throwsIllegalArgumentException,IllegalAccessException{}

//返回字段在指定对象中的值,如果字段是静态字段,则可以传null

publicbytegetByte(Objectobj)throwsIllegalArgumentException,IllegalAccessException{}

//返回字段在指定对象中的值,如果字段是静态字段,则可以传null

publicchargetChar(Objectobj)throwsIllegalArgumentException,IllegalAccessException{}

//返回字段在指定对象中的值,如果字段是静态字段,则可以传null

publicshortgetShort(Objectobj)throwsIllegalArgumentException,IllegalAccessException{}

//返回字段在指定对象中的值,如果字段是静态字段,则可以传null

publicintgetInt(Objectobj)throwsIllegalArgumentException,IllegalAccessException{}

//返回字段在指定对象中的值,如果字段是静态字段,则可以传null

publiclonggetLong(Objectobj)throwsIllegalArgumentException,IllegalAccessException{}

//返回字段在指定对象中的值,如果字段是静态字段,则可以传null

publicfloatgetFloat(Objectobj)throwsIllegalArgumentException,IllegalAccessException{}

//返回字段在指定对象中的值,如果字段是静态字段,则可以传null

publicdoublegetDouble(Objectobj)throwsIllegalArgumentException,IllegalAccessException{}

//设置字段在指定对象中的值,如果字段是静态字段,则对象可以传null

publicvoidset(Objectobj,Objectvalue)throwsIllegalArgumentException,IllegalAccessException{}

//设置字段在指定对象中的值,如果字段是静态字段,则对象可以传null

publicvoidsetBoolean(Objectobj,booleanz)throwsIllegalArgumentException,IllegalAccessException{}

//设置字段在指定对象中的值,如果字段是静态字段,则对象可以传null

publicvoidsetByte(Objectobj,byteb)throwsIllegalArgumentException,IllegalAccessException{}

//设置字段在指定对象中的值,如果字段是静态字段,则对象可以传null

publicvoidsetChar(Objectobj,charc)throwsIllegalArgumentException,IllegalAccessException{}

//设置字段在指定对象中的值,如果字段是静态字段,则对象可以传null

publicvoidsetShort(Objectobj,shorts)throwsIllegalArgumentException,IllegalAccessException{}

//设置字段在指定对象中的值,如果字段是静态字段,则对象可以传null

publicvoidsetInt(Objectobj,inti)throwsIllegalArgumentException,IllegalAccessException{}

//设置字段在指定对象中的值,如果字段是静态字段,则对象可以传null

publicvoidsetLong(Objectobj,longl)throwsIllegalArgumentException,IllegalAccessException{}

//设置字段在指定对象中的值,如果字段是静态字段,则对象可以传null

publicvoidsetFloat(Objectobj,floatf)throwsIllegalArgumentException,IllegalAccessException{}

//设置字段在指定对象中的值,如果字段是静态字段,则对象可以传null

publicvoidsetDouble(Objectobj,doubled)throwsIllegalArgumentException,IllegalAccessException{}

public<TextendsAnnotation>TgetAnnotation(Class<T>annotationClass){}

//返回标识在字段上的指定类型注解数组

public<TextendsAnnotation>T[]getAnnotationsByType(Class<T>annotationClass){}

//返回标识在字段上的指定类型注解数组(不包含继承)

publicAnnotation[]getDeclaredAnnotations(){}

publicAnnotatedTypegetAnnotatedType(){}

importjava.lang.reflect.AnnotatedType;

importjava.lang.reflect.Field;

publicStringstuName="apple";

publicList<Person>personList;

publicstaticvoidmain(String[]args)throwsException{

Class<FieldStudy>clazz=FieldStudy.class;

FieldStudyobj=newFieldStudy();

FieldstuNameField=clazz.getDeclaredField("stuName");

FieldstuAgeField=clazz.getDeclaredField("stuAge");

FieldschoolTypeField=SchoolType.class.getDeclaredFields()[0];

FieldpersonListField=clazz.getDeclaredField("personList");

Class<?>declaringClass=stuNameField.getDeclaringClass();//FieldStudy

Stringname=stuNameField.getName();//stuName

//返回字段修饰符的int表示(如public,详情见Modifiers类)

intmodifiers=stuNameField.getModifiers();

//字段是否是枚举类型的一个元素

booleanisEnumConstant=schoolTypeField.isEnumConstant();//true

booleanisSynthetic=schoolTypeField.isSynthetic();//false

Class<?>type=stuNameField.getType();//classjava.lang.String

//返回字段的泛型类型,结果为List<Person>

TypegenericType=personListField.getGenericType();

//当两个字段由相同的类声明,且有相同的名称和Type,则相等

booleanequals=stuNameField.equals(stuNameField);

//返回hashcode,其由声明类名和字段名通过异或计算而得

inthashCode=stuNameField.hashCode();//1927171879

StringtoString=stuNameField.toString();

//返回字段描述(包含它的泛型类型)

StringtoGenericString=personListField.toGenericString();

//返回字段在指定对象中的值,如果字段是静态字段,则可以传null

ObjectgetOper=stuNameField.get(obj);//apple

Objectage=stuAgeField.get(null);//

//下面方法使用同前类似,就不一一举例了

//设置字段在指定对象中的值,如果字段是静态字段,则对象可以传null

stuNameField.set(obj,"banana");

//下面方法使用同前类似,就不一一举例了

//setBoolean(Objectobj,booleanz);

//setDouble(Objectobj,doubled);

//返回标识在字段上的指定类型注解

Annotationannotation=stuNameField.getAnnotation(AnnoCache.class);

//返回标识在字段上的指定类型注解数组

Annotation[]annotationsByType=stuNameField.getAnnotationsByType(AnnoCache.class);

//返回标识在字段上的指定类型注解数组(不包含继承)

Annotation[]declaredAnnotations=stuNameField.getDeclaredAnnotations();

AnnotatedTypeannotatedType=stuNameField.getAnnotatedType();

@Retention(RetentionPolicy.RUNTIME)

newfield是什么意思?用法、例句的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于Field类及相关类解读、newfield是什么意思?用法、例句的信息别忘了在本站进行查找哦。

本站涵盖的内容、图片、视频等数据,部分未能与原作者取得联系。若涉及版权问题,请及时通知我们并提供相关证明材料,我们将及时予以删除!谢谢大家的理解与支持!

Copyright © 2023