转载自 高级 | Java中获取类名的3种方法

获取类名的方法

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      TestClassgetName            com.test.TestClass$TestInnerClass
getCanonicalName   com.test.TestClass.TestInnerClass
getSimpleName      TestInnerClassgetName            [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中获取类名的3种方法相关推荐

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

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

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

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

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

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

  4. Spring 中获取 request 的几种方法,及其线程安全性分析

    概述 在使用Spring MVC开发Web系统时,经常需要在处理请求时使用request对象,比如获取客户端ip地址.请求的url.header中的属性(如cookie.授权信息).body中的数据等 ...

  5. Java中String字符串截取几种方法(substring,split)

    Java中String字符串截取几种方法 substring,split 这是一个Java中的String的基础用法的演示. 下面通过代码对大家进行讲解 substring 这里用来ndexOf,la ...

  6. Java中创建数组的几种方法

    Java中创建数组的几种方法 public static void main(String[] args) { //创建数组的第一种方法 int[] arr=new int[6]; int intVa ...

  7. 在 Java 中初始化 List 的五种方法

    转载自  在 Java 中初始化 List 的五种方法 Java 中经常需要使用到 List,下面简单介绍几种常见的初始化方式. 1.构造 List 后使用 List.add 初始化 List< ...

  8. PHP中获取星期的几种方法

    PHP中获取星期的几种方法 PHP星期几获取代码: 1 date(l); 2 //data就可以获取英文的星期比如Sunday 3 date(w); 4 //这个可以获取数字星期比如123,注意0是星 ...

  9. android获取颜色资源,Android中获取颜色的几种方法

    Android中获取颜色的几种方法: 通过android封装好的Color类中的常量 public static final int BLACK = 0xFF000000; public static ...

最新文章

  1. php空格是什么,php删除空格函数是什么
  2. CV:Win10下深度学习框架安装之Tensorflow/tensorflow_gpu+Cuda+Cudnn(最清楚/最快捷)之详细攻略(图文教程)
  3. 我的2015学习总结及2016的技术规划(2016.02)
  4. LS-DYNA常用关键字
  5. Linux下PostgreSQL基础操作
  6. [JSON].valueOf( keyPath )
  7. C#中const和readonly的区别
  8. Vue监视---vue工作笔记0005
  9. chmod命令用于更改文件或目录的所有者_Linux 修改权限命令 chmod 用法示例
  10. 为什么eval某个json字符串时要加括号?
  11. ajax 将整个表单提交到后台处理
  12. i.MX283A移植mt7601--小米随身wifi
  13. 反击网络执法官(转)
  14. Tomcat的appBase,docBase,path关系
  15. vue自动计算日期天数
  16. 高通核心板,高通骁龙410系列 MSM8916
  17. 电脑耳机拔出后,再插入没声音
  18. android webview无法显示H5中的图片
  19. SOAP Client in Delphi7
  20. C++中引用,指针,指针的引用,指针的指针

热门文章

  1. [C++STL]仿函数用法介绍
  2. C++to_string应用举例
  3. 数据结构与算法-- 数组中出现次数超过一半的数字(时间复杂度的讨论)
  4. Redis和DB数据一致性解决方案
  5. paragon+ntfs+linux,NTFS For Mac 超强兼容性
  6. Oracle多租户体系,Oracle12C 多租户管理
  7. php冒泡程序讲解,PHP冒泡排序程序代码与源代码
  8. 数据结构---邻接表的DFS
  9. Linux下Java环境变量配置
  10. CSP2020 赛前总结