获得Class类对象的几种方法

第一种方法:

    public static void main(String[] args) {
            String str = "Hello";
            Class cls = str.getClass(); //必须有一个实例化的对象
            System.out.println(cls);

第二种:

public static void main(String[] args) {
            Class cls = java.lang.String.class; 
            System.out.println(cls);

这种方法不需要一定要一个实例化的对象,直接通过类名就能得到。但是这种方法必须有一个明确的结构,就是那个类必须要存在。java.lang.String.class 如果这里写错了,程序就必然会报错。编译不能通过。但是有的时候的情况是,我们要给之后的可能新有的类预留出空间,这样这么做就不行了。

第三种方法:

public static void main(String[] args) throws Exception{    
            Class cls = Class.forName("java.lang.String"); 
            System.out.println(cls);

这个方法的好处就是即使java.lang.String不存在,在编译的时候也不会报错,只有在运行的时候才会报错。

但是我们的目的不是取得类对象,取得类对象之后,我们得到类的实例化对象的方法就不用new了,这时候就可以用Class里面的方法newInstance()。
这个方法可能会抛出两个异常:
InstantiationException: 没有无参构造,或者类名错误
IllegalAccessException:构造方法私有化

你可能感兴趣的:(获得Class类对象的几种方法)