第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Java 中獲取類名的三種方法,你知道幾種?

標(biāo)簽:
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技术干货。

點(diǎn)擊查看更多內(nèi)容
6人點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消