java反射使用方式
作者:bin一、反射是什么?
java反射是加载类的一种方式,我们正常加载类的方式就是new一个对象
例如
Apple a = new Apple();
反射就是加载的类不是固定的值,可以动态的去加载类,如下:
Class clz = Class.forName("com.zengbingo.Apple"); Method method = clz.getMethod("setPrice", int.class); Constructor constructor = clz.getConstructor(); Object object = constructor.newInstance(); method.invoke(object, 4);
二、获取Class对象的3种方式
1.通过类的全路径获取
Class clz = Class.forName("com.zengbingo.Apple");
2.使用.class获取
Class clz = Apple.class
3.使用类对象获取
Apple a = new Apple(); Class clz = a.getClass();
三、通过Class对象创建类对象
1.直接通过class对象生成
Class clz = Class.forName("com.zengbingo.Apple"); Apple a = clz.newInstance();
2.通过Class的构造方法获取对象,可以指定构造方法
Class clz = Class.forName("com.zengbingo.Apple"); Constructor constructorA = clz.getConstructor(); Apple appleA = (Apple)constructorA.newInstance(); //指定构造方法 Constructor constructorB = clz.getConstructor(String.class, int.class); Apple appleB = (Apple)constructorB.newInstance();
四、通过Clz获取类属性
通过getFields获取属性,通过getDeclaredFields获取包含私有属性的所有属性
Class clz = Apple.class; Field[] fields = clz.getFields(); //Field[] fields = clz.getDeclaredFields(); for (Field field : fields) { System.out.println(field.getName()); }