自定义一个类 MyClass,并声明该类的对象:
class MyClass{}
MyClass mClass1 = new MyClass();
- 1
- 2
- 3
在上面说过,Class
类的构造方法是私有的,只有 java 虚拟机可以调用该方法创建该类的对象。也就是说我们无法像定义普通类对象一样,通过 new 直接创建 Class
类的对象。
但是,我们依然可以通过其他方式得到 Class 类的对象
通过类的静态成员表示。每个类都有一个隐含的静态成员class,表示如下:
Class c1 = MyClass.class;
- 1
通过类对象的
getClass()
方法。由1不难理解,既然存在静态变量,那么通过对象的 getter 方法,就可以获取静态成员class:Class c2 = mClass1.getClass();
- 1
通过
Class
类的静态方法forName()
方法获取Class
的对象。区别于通过 new 创建对象(编译时静态加载),在开发时如果我们需要动态加载我们的功能模块,该方法可以帮助我们实现在程序运行时类的动态加载。try { //注意,forName()需要传入类的全路径 //如果当前类与参数类在同一包下即可省略包名 mClass = Class.forName("custom.OtherClass"); } catch (ClassNotFoundException e) { e.printStackTrace(); }
由 Class 类的对象得到类的对象
我们可以通过类或类对象得到 Class
类的对象,反过来,我们也可以由 Class
类的对象得到类的对象:
MyClass mClass2 = (MyClass)c2.newInstance();
newInstance()方法相当于调用Class加载方法加载某个类,然后实例化