很多朋友都想知道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
以上就是小编今天的分享,希望能帮到大家。