其实任何一个类,都会有一个Class对象于这个类对应,在这个Class对象中,保存着实例化该类时所需要的基本信息,A.class
其实返回的是一个类 A 的 Class 对象,贴一个小代码演示一下:
public class Test {
public static void main(String[] args) {
// 得到类名(不包含包名)
System.out.println(String.class.getSimpleName());// String
// 得到类的全名称(包含所在的包名)
System.out.println(String.class.getName());// java.lang.String
System.out.println(Test.class.getName());// Test
}
}
获取Calss对象的方式主要有三种:
第一种:通过Class.forName(“类的全名称”)
获取,用这个方法,最常见的应该是应用于JDBC注册驱动的时候用到的
第二种:通过已经实例化的对象获取,getClass()
方法获取
第三种:通过类名.class
获取
实例:
package org.lxh.test;
class X{
}
public class GetClassDemo {
public static void main(String[] args) {
Class<?> c1 = null;//指定泛型
Class<?> c2 = null;//指定泛型
Class<?> c3 = null;//指定泛型
try{
c1 = Class.forName("org.lxh.test.X");//第一种:最常用的形式
}catch (ClassNotFoundException e){
e.printStackTrace();
}
c2 = new X().getClass();//第二种:通过 Object 类中方法实例
c3 = X.class;//第三种:通过类.class实例化
System.out.println("类名称:" + c1.getName());//得到类的名称
System.out.println("类名称:" + c2.getName());
System.out.println("类名称:" + c3.getName());
}
}
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
单独的类.class
表示的是这个类或者接口类:
参考:
【1】https://blog.csdn.net/u012453619/article/details/38638313?utm_source=tuicool&utm_medium=referral
【2】https://blog.csdn.net/nanhuaibeian/article/details/104402854