反射获取属性

xiaoxiao2021-02-28  102

Class c = 类名.class;

Field f = c.getDeclaredField("属性名");

成员变量

f.get(对象实例);

static变量

f.get(null);

/* * 通过反射获取一个对象的属性值,切记是对象,没有对象哪有成员变量值,除非是static的属性 * * * */ package day8yue6; import java.lang.reflect.Field; public class GetField { public static void main(String[] args) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { Class a = A.class; //获取这个类的所有属性 Field[] f = a.getDeclaredFields(); for (Field fa : f) { try { //fa.get(new A())获得是Object类型,如果想正常使用要转换成各自类型 //public Object get(Object obj) 研究源码一清二楚 //获取对象成员,当然要有实实在在的对象new A()啦,获取静态的就不需要了 System.out.println(fa.get(new A())); } catch (Exception e) { e.printStackTrace(); } } //获取静态属性,静态属性属于类,不需要先创建对象作为参数 Field f1 = a.getDeclaredField("name"); System.out.println(f1.get(null)); } } class A { public int age = 30; public static String name = "static"; }

转载请注明原文地址: https://www.6miu.com/read-50275.html

最新回复(0)