本文目录一览:
Java中的类的field到底是指什么?
field就是类的属性,在类级别的定义用static,普通成员变量
方法参数是局部变量,实际上就是这么区分的。
java field获取值
很多朋友都想知道java field怎么获取值?下面就一起来了解一下吧~
定义
public Object get(Object obj)
1. 如果字段不是静态字段的话,要传入反射类的对象.如果传null是会报java.lang.NullPointerException
2. 如果字段是静态字段的话,传入任何对象都是可以的,包括null
例子
1. 获取属性的值
public static void main(String[] args) throws Exception { //使用反射第一步:获取操作类FieldDemo所对应的Class对象 Class cls = Class.forName(“com.testReflect.FieldDemo”); //使用FieldDemo类的class对象生成 实例 Object obj = cls.newInstance(); //通过Class类中getField(String name): 获取类特定的方法,name参数指定了属性的名称 Field field = cls.getField(“num1”); //拿到了Field类的实例后就可以调用其中的方法了 //方法:get(Object obj) 返回指定对象obj上此 Field 表示的字段的值 System.out.println(“属性值: ” + field.get(obj)); //方法: set(Object obj, Object value) 将指定对象变量上此 Field 对象表示的字段设置为指定的新值 field.set(obj, 55); System.out.println(“修改属性值后 — get(Object obj): ” + field.get(obj)); }
2. get()传值
class A { int fild=3; static int staticFild=4; } public class FiledTest { public static void main(String[] args) throws Exception { Field field=A.class.getDeclaredField(“fild”); int a= (Integer)field.get(new A()) ; // int c= (Integer)field.get(null) ; //不是静态字段不能传null System.out.println(a); Field staticfield=A.class.getDeclaredField(“staticFild”); int b= (Integer)staticfield.get(“”) ; int d= (Integer)staticfield.get(null) ; System.out.println(b); System.out.println(d); } }
运行结果: 3 4 4
java field为什么需要单独导入
因为Field并不是java.lang包下的直接子类
而是java.lang.reflect包下的子类,所以需要导包,只有lang包下的直接子类不需要导包例如:java.lang.String就不需要导包
java中的field是什么意思
field的意思是“字段”,这里可以理解成变量.
field的解释:
class A{
private int a; //private field私有域
protected double b; //protected field保护域
public String c; //public field公共域
A d; //default access field默认访问域
public static Object e; //public static field公共静态域
.
}
java中的field什么意思
主要方法
getType(): 获取属性声明时类型对象(返回class对象)
getGenericType() : 返回属性声的Type类型
getName() : 获取属性声明时名字
getAnnotations() : 获得这个属性上所有的注释
getModifiers() : 获取属性的修饰
isEnumConstant() : 判断这个属性是否是枚举类
isSynthetic() : 判断这个属性是否是 复合类
get(Object obj) : 取得obj对象这个Field上的值
set(Object obj, Object value) : 向obj对象的这个Field设置新值value
Field类中最常用的是get(Object obj)和set(Object obj, Object value)这两个方法,所以这两个方法是最重要的。
getType() 和 getGenericType()的区别 :
1.首先是返回的类型不一样,一个是Class对象一个是Type接口
2.如果属性是一个泛型,从getType()只能得到这个属性的接口类型。但从getGenericType()还能得到这个泛型的参数类型。
isEnumConstant()和isSynthetic() :
对象中如果有属性是枚举类或复合类,用这两个方法返回的值并不是我们想象的true而是false。其实这两个方法是对编译生成的才有效。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/309285.html