使用Class对象可以直接访问类的基础信息,这些基础信息包括类名称、类所在的包名、类的哈希码。
Class类访问类基础信息的方法说明如下:
● String getName()
该方法用于返回类的名称,类的名称也包含包的路径。返回类型为字符串。
● Package getPackage()
该方法用于返回类所在的包,返回类型为Package类型。
● int hashCode()
该方法返回调用对象的哈希码,hashCode()方法是父类Object的方法。
案例1:建立ClassBasicInfo测试类,实例化Book类,输出Book类的基础信息。
在PCoreUnit8项目新建info包,在info包下新建ClassBasicInfo类。代码如下:
package info;
import reflex.Book;
/**
* @ClassName: ClassBasicInfo
* @Description: 反射(访问类的基础信息)案例1
* @author 编程训练营
* @date
*
*/
public class ClassBasicInfo {
/**
* @Title: main
* @Description: Java程序入口main方法
* @param @param args 参数
* @return void 返回类型
* @throws
*/
public static void main(String[] args) {
// 实例化Book类
Book book = new Book();
// 获取book的class对象
Class bookClass = book.getClass();
// 输出类的名称
System.out.printf("book对象的类名:%s\n",bookClass.getName());
// 输出类所在包的名称
Package pack = bookClass.getPackage();
System.out.printf("Book类所在的包名:%s\n",pack.getName());
// 输出Class对象的哈希码
System.out.printf("Book类Class对象的哈希码为:%s\n",bookClass.hashCode());
// 输出book对象的哈希码
System.out.printf("book对象的哈希码为:%s\n",book.hashCode());
}
}ClassBasicInfo程序首先实例化Book类,然后调用getClass()方法获取Book类的Class对象,分别输出book对象的类名、Book类所在的包名、Book类静态变量Class对象的哈希码、book对象的哈希码。
程序执行结果如下图所示:
