之前我们分享过Java高级篇——深入浅出Java类加载机制这篇文章,今天来带你了解获取类名的三种方法。

获取类名的方法

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

getName()

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

getCanonicalName()

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

getSimpleName()

返回的是类的简称。

都有什么区别?

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

public class TestClass {

public static void main(String[] args) {

// 外部普通类

System.out.println("方法名 类名");

System.out.println("getName " + TestClass.class.getName());

System.out.println("getCanonicalName " + TestClass.class.getCanonicalName());

System.out.println("getSimpleName " + TestClass.class.getSimpleName());

System.out.println();

// 内部类

System.out.println("getName " + TestInnerClass.class.getName());

System.out.println("getCanonicalName " + TestInnerClass.class.getCanonicalName());

System.out.println("getSimpleName " + TestInnerClass.class.getSimpleName());

System.out.println();

// 数组类

TestInnerClass[] testInnerClasses = new TestInnerClass[]{

new TestInnerClass(),

new TestInnerClass(),

new TestInnerClass()

};

System.out.println("getName " + testInnerClasses.getClass().getName());

System.out.println("getCanonicalName " + testInnerClasses.getClass().getCanonicalName());

System.out.println("getSimpleName " + testInnerClasses.getClass().getSimpleName());

System.out.println();

}

static class TestInnerClass {

}

}

程序输出以下结果。

方法名 类名

getName com.test.TestClass

getCanonicalName com.test.TestClass

getSimpleName TestClass

getName com.test.TestClass$TestInnerClass

getCanonicalName com.test.TestClass.TestInnerClass

getSimpleName TestInnerClass

getName [Lcom.test.TestClass$TestInnerClass;

getCanonicalName com.test.TestClass.TestInnerClass[]

getSimpleName TestInnerClass[]

[Lcom.test.TestClass$TestInnerClass;值得说明一下。

这是一种对函数返回值和参数的编码,叫做JNI字段描述符(JavaNative Interface FieldDescriptors)。

[ 表示数组,一个代表一维数组,比如 [[ 代表二维数组。之后 L 代表类描述符,最后;表示类名结束。

结论

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

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

本文原创首发于公众号:Java技术栈(ID:javastack),关注公众号回复关键字:java,可以获取更多博主精心整理的Java技术干货。

java 不知道类名_Java 中获取类名的三种方法,你知道几种?相关推荐

  1. java 取名字_Java 中获取类名的三种方法,你知道几种?

    之前我们分享过Java高级篇--深入浅出Java类加载机制这篇文章,今天来带你了解获取类名的三种方法. 获取类名的方法 Java 中获取类名的方式主要有以下三种. getName()返回的是虚拟机里面 ...

  2. java 获取类名_Java中获取类名的3种方法!

    获取类名的方法 Java 中获取类名的方式主要有以下三种. getName() 返回的是虚拟机里面的class的类名表现形式. getCanonicalName() 返回的是更容易理解的类名表示. g ...

  3. java 时间戳 对比_Java中获取时间戳的三种方式对比实现

    Java中获取时间戳 三种方式对比 最近项目开发过程中发现了项目中获取时间戳的业务.而获取时间戳有以下三种方式,首先先声明推荐使用System类来获取时间戳,下面一起看一看三种方式. 1.System ...

  4. java取子串_Java中获取子字符串的几种方法示例

    首先假如有这样一串字符串: String s = "共 100 页, 1 2 3 4..."; 假如我想把"100"给取出来,该如何做? 方法一: 采用spli ...

  5. java rsa 解密_Java中RSA加密解密的实现方法分析

    本文实例讲述了Java中RSA加密解密的实现方法.分享给大家供大家参考,具体如下: public static void main(String[] args) throws Exception { ...

  6. java中怎么找类的路径_Java中获取类加载路径和项目根路径的5种方法

    public class MyUrlDemo { public static void main(String[] args) { MyUrlDemo muDemo = new MyUrlDemo() ...

  7. java 获取星期几_java中获取日期是星期几的两种方法

    java中取得指定日期是星期几可以采用下面两种方式取得日期是星期几:(推荐:java视频教程) 1.使用Calendar类//根据日期取得星期几 public static String getWee ...

  8. java this()函数_java中this关键字的三种用法

    this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针. this的用法在java中大体可以分为3种: 1.普通的直接引用,this相当于是指向当前对象本身. 2.形参与成员名字重 ...

  9. java 直接从数组中获取最大值和最小值的方法

    平常我们获取数组中最大元素的方法一般是通过循环判断来实现,但是相对于循环判断来实现的方法,我们还可以直接从数组中拿到最大或者最小的元素. 下面是我使用的方法: 直接使用Collections.max( ...

最新文章

  1. 三星拆分将近 董事会决定先创建控股公司
  2. 呼市职称计算机考试时间,2016下半年内蒙古呼和浩特会计从业考试报名时间
  3. 使用Git上传本地项目到oschina
  4. 四部门联合约谈马云等蚂蚁集团有关人员,蚂蚁集团回应...
  5. bootstratp图标的使用
  6. python源代码编译后的文件扩展名-python源代码被解释器转换后的格式是什么?
  7. JavaScript实现哈希表数据结构
  8. stm32 KEIL AC6 优化0程序不运行问题解决
  9. Pyhton3 下载Telegram 频道数据
  10. 21313211312313
  11. csgo中国上海服务器因维护,2019CSGO亚洲邀请赛11月20日战火重燃 再临上海
  12. html内联样式(表),外部样式表
  13. 阿里云学生机购买需要什么资格?(特惠专场)
  14. 台式机机械硬盘的安装
  15. mac鼠标光标消失怎么办?
  16. #BDA#笔记#阶段一:制作数据分析报告
  17. MagSearch高速云点播堪比115你有东西我便播
  18. ospf 实验详细分析
  19. 电子技术背后的数学本质【3】(放大器电路噪声的计算和去除)
  20. 阿里技术实战:数十万云服务器如何高效运维?

热门文章

  1. mongodb 按配置文件mongodb.conf启动
  2. 生成动态验证码的jsp
  3. Retrofit2 源码解析之动态代理
  4. Beta冲刺随笔集合
  5. 第十六 django进一步了解
  6. Python爬虫入门三之Urllib库的基本使用
  7. C 入门 第八节 指针
  8. 微信硬件平台智能路由行业解决方案
  9. 图(1)——图的定义和基本概念
  10. Centos下通过SMTP发送邮件失败解决