java 不知道类名_Java 中获取类名的三种方法,你知道几种?
之前我们分享过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 中获取类名的三种方法,你知道几种?相关推荐
- java 取名字_Java 中获取类名的三种方法,你知道几种?
之前我们分享过Java高级篇--深入浅出Java类加载机制这篇文章,今天来带你了解获取类名的三种方法. 获取类名的方法 Java 中获取类名的方式主要有以下三种. getName()返回的是虚拟机里面 ...
- java 获取类名_Java中获取类名的3种方法!
获取类名的方法 Java 中获取类名的方式主要有以下三种. getName() 返回的是虚拟机里面的class的类名表现形式. getCanonicalName() 返回的是更容易理解的类名表示. g ...
- java 时间戳 对比_Java中获取时间戳的三种方式对比实现
Java中获取时间戳 三种方式对比 最近项目开发过程中发现了项目中获取时间戳的业务.而获取时间戳有以下三种方式,首先先声明推荐使用System类来获取时间戳,下面一起看一看三种方式. 1.System ...
- java取子串_Java中获取子字符串的几种方法示例
首先假如有这样一串字符串: String s = "共 100 页, 1 2 3 4..."; 假如我想把"100"给取出来,该如何做? 方法一: 采用spli ...
- java rsa 解密_Java中RSA加密解密的实现方法分析
本文实例讲述了Java中RSA加密解密的实现方法.分享给大家供大家参考,具体如下: public static void main(String[] args) throws Exception { ...
- java中怎么找类的路径_Java中获取类加载路径和项目根路径的5种方法
public class MyUrlDemo { public static void main(String[] args) { MyUrlDemo muDemo = new MyUrlDemo() ...
- java 获取星期几_java中获取日期是星期几的两种方法
java中取得指定日期是星期几可以采用下面两种方式取得日期是星期几:(推荐:java视频教程) 1.使用Calendar类//根据日期取得星期几 public static String getWee ...
- java this()函数_java中this关键字的三种用法
this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针. this的用法在java中大体可以分为3种: 1.普通的直接引用,this相当于是指向当前对象本身. 2.形参与成员名字重 ...
- java 直接从数组中获取最大值和最小值的方法
平常我们获取数组中最大元素的方法一般是通过循环判断来实现,但是相对于循环判断来实现的方法,我们还可以直接从数组中拿到最大或者最小的元素. 下面是我使用的方法: 直接使用Collections.max( ...
最新文章
- 三星拆分将近 董事会决定先创建控股公司
- 呼市职称计算机考试时间,2016下半年内蒙古呼和浩特会计从业考试报名时间
- 使用Git上传本地项目到oschina
- 四部门联合约谈马云等蚂蚁集团有关人员,蚂蚁集团回应...
- bootstratp图标的使用
- python源代码编译后的文件扩展名-python源代码被解释器转换后的格式是什么?
- JavaScript实现哈希表数据结构
- stm32 KEIL AC6 优化0程序不运行问题解决
- Pyhton3 下载Telegram 频道数据
- 21313211312313
- csgo中国上海服务器因维护,2019CSGO亚洲邀请赛11月20日战火重燃 再临上海
- html内联样式(表),外部样式表
- 阿里云学生机购买需要什么资格?(特惠专场)
- 台式机机械硬盘的安装
- mac鼠标光标消失怎么办?
- #BDA#笔记#阶段一:制作数据分析报告
- MagSearch高速云点播堪比115你有东西我便播
- ospf 实验详细分析
- 电子技术背后的数学本质【3】(放大器电路噪声的计算和去除)
- 阿里技术实战:数十万云服务器如何高效运维?