JAVA获取类的类对象的三种方式

自定义一个类 MyClass,并声明该类的对象:

class MyClass{}

MyClass mClass1 = new MyClass();
  • 1
  • 2
  • 3

在上面说过,Class 类的构造方法是私有的,只有 java 虚拟机可以调用该方法创建该类的对象。也就是说我们无法像定义普通类对象一样,通过 new 直接创建 Class 类的对象。

但是,我们依然可以通过其他方式得到 Class 类的对象

  1. 通过类的静态成员表示。每个类都有一个隐含的静态成员class,表示如下:

    Class c1 = MyClass.class;
    • 1
  2. 通过类对象的 getClass() 方法。由1不难理解,既然存在静态变量,那么通过对象的 getter 方法,就可以获取静态成员class:

    Class c2 = mClass1.getClass();
    • 1
  3. 通过 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加载方法加载某个类,然后实例化

猜你喜欢

转载自blog.csdn.net/qq_31370997/article/details/80484149