Java中的Class类

Java中的Class类

综述:

Java中的Class也是属于一种特殊的类,它记录着类的信息,是一种记录类的信息的类

在Java程序中:

在Java程序运行期间,系统始终为所有对象维护一个运行时类型标志。这个信息会跟踪每个对象所属的类,JVM(虚拟机)需要据此来执行正确的方法。此时,如果要访问这些信息,就可以利用Class类获取这些信息,就像其他对象会描述一个对象的属性一样,Class对象会描述一个特定类的属性。

如何获取一个类的信息:

1.运用Object中的getClass方法,该方法会返回一个Class类型的实例。比如:

String e = new String("hello");
Class cl = e.getClass();

此时cl就成为了String 类的 一个Class实例。

2.使用静态方法forName获取类名对应的Class对象。比如:

String className = "java.util.String";
Class cl = Class.forName(className);

此处要注意,如果类在一个包里,包的名字也作为类的一部分,如果只是简写,比如:

String className = "String";
Class cl = Class.forName(className);

是会报错的。

3.使用.class字段

若A为任意的Java类型(或void)关键字,A.class将匹配所代表的类对象。
比如:

 String className = "hello";
 Class cl = String.class;

要注意,一个Class对象实际上表示的是一个类型,这可能是类,也可能不是,比如int为基本的数据类型,但它不是一个类,但int.class是一个Class类型的对象,它描述的是int类型的信息

基本的实际应用:

1.获取一个对象的类名。

Class里有getName方法,用于返回一个保存类名的字符串(同样包括包的名称),例如:

String test = "hello";
Class cl = String.class;
String className = cl.getName();// 此时字符串的内容为:java.util.String

2.实现两个类对象的比较。

由于虚拟机只为每个类型管理一个唯一的Class对象,所以可以用 == 运算符实现两个类对象的比较。比如:

if(A.getClass() == String.class) ...

如果A是一个String类型的对象,该表达式就为真,但是其与 instanceof 运算符不同,即使A为String的子类,该表达式即为假

3.用来用构造器来构造实例,比如:

	String name = "java.util.String";
	Class cl = Class.forName(name);
	Object obj = cl.getConstructor().newInstance();

此处为简单演示,具体应用可以参照构造器的相关知识。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值