1.说明
在java.lang.Class类中有一个获取类名的方法:public String getName()
其返回的是该对象表示的类或接口的名称。
返回由这个Class对象表示的实体的字符串名称,
这个实体可以是:class, interface, array class, primitive type, void
如果这个类对象表示非数组类型的引用类型,
则返回类的全限定类名,
即Java语言规范指定的名称。
如果这个类对象表示基本类型或void,
则返回的名称是一个简写字符串,
与Java语言关键字中的基本类型或void有对应关系。
如果这个类对象表示一个数组类,
则名称的内部形式由元素类型的名称组成,
前面是一个或多个表示数组嵌套深度的“[”字符。
2.非数组类型映射关系
Element Type |
Encoding |
boolean |
Z |
byte |
B |
char |
C |
class or interface |
Lclassname; |
double |
D |
float |
F |
int |
I |
long |
J |
short |
S |
3.数组类型映射关系
Element Type |
Encoding |
array boolean |
[Z |
array byte |
[B |
array char |
[C |
array class or interface |
[Lclassname; |
array double |
[D |
array float |
[F |
array int |
[I |
array long |
[J |
array short |
[S |
类名或接口名classname是上面指定的全限定类名。 |
4.示例
String.class.getName()
returns "java.lang.String"
byte.class.getName()
returns "byte"
(new Object[3]).getClass().getName()
returns "[Ljava.lang.Object;"
(new int[3][4][5][6][7][8][9]).getClass().getName()
returns "[[[[[[[I"
5.扩充知识点
5.1.全限定类名
全限定类名就是类名全称,带包路径的用点隔开,例如: java.lang.String。
5.2.非限定类名
非限定类名也叫短名,就是我们平时说的类名,不带包的,例如:String。
5.3.全限定类名和非限定类名的区别
非限定类名是相对于限定类名来说的,
在Java中有很多类,
不同的类之间会存在相同的函数或者方法,
所以有时候就需要限定类名来调包。
而如果不存在相同的函数或者方法 ,
就可以使用非限定类名。