在java中,Object类是所有类的父类,同样,所有类的实例化对象也都是Class类的实例
因此,这样一来就会牵扯到向上转型和向下转型的概念
由于向下转型的不安全因素,在这里泛型也会接踵而来
实例2:Class类的实例化
由于Class类没有构造方法,所以实例化Class类的方式有点特殊,有三种方式:
-
对象.getClass( )
-
类.Class
-
forName( )
其中,forName( )方法需要重点掌握,因为它可以在类不确定的情况下实例化Class,更具灵活性
Class类中有一个方法叫做newInstance( ),它可以用来创建一个Class类对象的新实例
怎么说呢?Class对象包含的内容就是反射好的那个类,我们要构造那个类的新实例(新对象)
这样就通过无参数的形式构造了一个新的对象,如同正常模式中
通过无参构造方法来构造新对象一样
类中除了有无参构造方法,还会存在有参数的构造方法
那在反射中如何通过有参数的形式构造对象呢?
无论是有参还是无参,这里所使用的构造方法,原本的类里面必须对应存在
那么,如何才能知道原有类里面的构造方法,普通方法,继承的父类等详细信息呢?
通过反射获取类的结构我们这里要导入一个新的包java.lang.reflect