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加载方法加载某个类,然后实例化
  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值