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中有很多类,
不同的类之间会存在相同的函数或者方法,
所以有时候就需要限定类名来调包。
而如果不存在相同的函数或者方法 ,
就可以使用非限定类名。
网友评论