但行好事
莫论前程❤

Java中获取类名的3种方法

获取类名的方法

Java 中获取类名的方式主要有以下三种。

  • getName()

返回的是虚拟机里面的class的类名表现形式。

  • getCanonicalName()

返回的是更容易理解的类名表示。

  • getSimpleName()

返回的是类的简称。

都有什么区别?

通过一个实例来看下它们主要的区别。

public class TestClass {

    public static void main(String[] args) {
        // 外部普通类
        //com.test.TestClass
        System.out.println(TestClass.class.getName());
        //com.test.TestClass
        System.out.println(TestClass.class.getCanonicalName());
        //TestClass
        System.out.println(TestClass.class.getSimpleName());

        // 内部类
        //com.test.TestClass$TestInnerClass
        System.out.println(TestInnerClass.class.getName());
        //com.test.TestClass.TestInnerClass
        System.out.println(TestInnerClass.class.getCanonicalName());
        //TestInnerClass
        System.out.println(TestInnerClass.class.getSimpleName());

        // 数组类
        TestInnerClass[] testInnerClasses = new TestInnerClass[]{
                new TestInnerClass(),
                new TestInnerClass(),
                new TestInnerClass()
        };
        //[Lcom.test.TestClass$TestInnerClass;
        System.out.println(testInnerClasses.getClass().getName());
        //com.test.TestClass.TestInnerClass[]
        System.out.println(testInnerClasses.getClass().getCanonicalName());
        //TestInnerClass[]
        System.out.println(testInnerClasses.getClass().getSimpleName());
    }

    static class TestInnerClass {
    }

}

结论

1、从以上结果可以看出 getName()getCanonicalName()在获取普通类名的时候没有区别,在获取内部类和数组类有区别的。

2、getSimpleName() 在获取普通类和内部类名的时候没区别,在获取数组类的时候有区别。

赞(0) 打赏
未经允许不得转载:刘鹏博客 » Java中获取类名的3种方法
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏