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