获取Class类的对象

获取Class类的对象

获取的三种方法:

利用class对象(字节码文件在内存中的表示)来创建的

反射方式:创建对象

反射方式:调用方法

反射获取构造方法

// Constructor<?>[] getConstructors();
        //      返回所有公共构造方法对象的数组
// 1. 获取Class对象
        Class clazz = Class.forName("com.charley.myreflect3.Student");
        Constructor[] constructors = clazz.getConstructors();
        for (Constructor constructor : constructors) {
            System.out.println(constructor);
        }
// Constructor<?>[] getDeclaredConstructors():
        //      返回所有构造方法对象的数组
// Constructor<T> getConstructor(Class<?>... parameterTypes):
        //      返回单个公共构造方法对象
// Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes):
//      返回单个构造方法对象
// 1. 获取Class对象
Class clazz = Class.forName("com.charley.myreflect3.Student");
// 2. 获取一个私有化的构造方法
Constructor constructor = clazz.getDeclaredConstructor(String.class);

// 被private修饰的成员,不能直接使用的
// 如果用反射强行获取并使用,需要临时取消访问检查
constructor.setAccessible(true);    // public修饰的构造器没有这个步骤,直接创建对象即可

// 3. 创建对象
Student student = (Student) constructor.newInstance("zhangsan");