首页 > java > java反射使用方式

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());
}

您必须 [ 登录 ] 才能发表留言!