Java中的反射——Class类

本文详细探讨了Java中的Class类,包括其特点:位于java.lang包,final修饰不可继承,实现Serializable接口,构造方法为private。并介绍了通过forName()、类名.class、对象.getclass()、包装类名.TYPE、元素类.class以及获取父类Class对象的6种创建Class对象的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Class类

在目前为止我博客中写到的Java类中,见到的对象无非就是我们常见的那些有属性,与方法的实例化对象,但在Java中有一个类,它的实例化对象也是类,它就是Java中的Class类。

二、Class类的特点

1.该类在java.lang包中;

2.该类被final所修饰,即该类不可以被子类继承;

3.该类实现了Serializable接口;

4.该类的构造方法被private所修饰,即不能通过new关键字创建该类的对象;

该类通过类加载器创建类对象。 

三、通过Class类为已有类创建对象

由上文可知,Class类不能通过new关键字来创建对象,因此需要用其他方式。有以下6种方式:

(1)forName()创建

package Test;

public class Test {
	
	public static void main(String[] args) {
		//反射是一种新的操作类中属性,构造方法和普通方法的机制		
		Class clazz;
		try {
			clazz = Class.forName("Test.Student");//forname()创建
			System.out.println(clazz.getName());//输出类名
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
}

运行结果: 

 

(2)类名.class创建

package Test;

public class Test {

	public static void main(String[] args) {
		// 反射是一种新的操作类中属性,构造方法和普通方法的机制
		Class clazz;
		clazz = Student.class;// 类名.class创建
		System.out.println(clazz.getName());
	}
}

 运行结果:

(3)类对象.getclass()创建

package Test;

public class Test {

	public static void main(String[] args) {
		// 反射是一种新的操作类中属性,构造方法和普通方法的机制
		Class clazz;
		clazz = new Student().getClass();// 类对象.getclass()创建
		System.out.println(clazz.getName());
	}
}

运行结果: 

(4)基本数据类型对应的Class类对象  包装类名.TYPE

package Test;

public class Test {

	public static void main(String[] args) {
		// 反射是一种新的操作类中属性,构造方法和普通方法的机制
		Class clazz;
		clazz = Integer.TYPE;// 基本数据类型对应的Class类对象 包装类名.TYPE
		System.out.println(clazz.getName());
	}
}

运行结果: 

 

(5)数组对应Class类对象  元素类.class

package Test;

public class Test {

	public static void main(String[] args) {
		// 反射是一种新的操作类中属性,构造方法和普通方法的机制
		Class clazz;
		clazz = String[].class;// 数组对应Class类对象 元素类.class
		System.out.println(clazz.getName());
	}
}

 

 

(6)获取某类父类对应Class类对象  某类.class.getSuperclass

package Test;

public class Test {

	public static void main(String[] args) {
		// 反射是一种新的操作类中属性,构造方法和普通方法的机制
		Class clazz;
		clazz = Student.class.getSuperclass();// 获取某类父类对应Class类对象
		// 某类.class.getSuperclass
		System.out.println(clazz.getName());
	}
}

 

四、Class类获取构造方法(后续)

五、Class类获取构造方法信息(后续)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值