很多朋友对于newfield是什么意思?用法、例句和Field类及相关类解读不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
这里介绍java反射中常用的Fied字段。
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是什么意思?用法、例句的信息别忘了在本站进行查找哦。