获得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:构造方法私有化

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,001评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,779评论 18 399
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,144评论 0 62
  • 负重深蹲 36KG 46KG 56KG 56KG 15×1各一组 负重弓步走 2.5KG 5KG 7.5KG 10...
    茄子就是茄子阅读 237评论 0 0
  • 创业8月昨天股东会到0点,越来越发现创业真的太好玩了,痛苦,怀疑,纠结,破旧,吵架,寻找,要求,挑战,不断的磨合冲...
    孙志新阅读 179评论 0 0