Java反射——访问构造方法

本文介绍了Java反射机制中如何访问构造方法。通过Constructor对象,可以获取和操纵构造方法,包括其修饰符信息。文章详细展示了如何使用getModifiers()、Modifier类解析方法以及如何调用private构造方法。示例代码演示了从获取公共构造方法到访问private构造方法的完整过程。

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

反射

通过Java的反射机制,可以在程序中访问已经装载到JVM中的Java对象的描述,实现访问,检测和修改描述Java对象本身信息的功能。通过反射可以访问构造方法,成员变量,和成员方法。

访问成员变量:Java反射——访问成员变量
访问成员方法:Java反射——访问成员方法

访问构造方法

利用Constructor对象可以操纵相应的构造方法。
在这里插入图片描述
Constructor类中提供的常用方法:

方法 说明
isVarArgs() 查看该构造方法是否允许带有可变数量的参数,如果允许则返回true,反之返回false
getParameterTypes() 按照声明顺序以Class数组的形式获得该构造方法的各个参数类型
gerExceptionTypes() 以Class数组的形式获得该构造方法可能抛出的异常
newInstance(Object…initargs) 通过该构造方法利用指定参数创建一个该类的对象,如果未设置参数则表示采取默认无参的构造方法
setAccessible(boolean fasg) 如果该构造方法的修饰符为private,默认不允许通过反射创建对象,需要通过执行该方法,并将入口参数设置为true,则允许
getModifiers() 获得可以解析出该构造方法所采用修饰符的整数

getModifiers()方法的返回值是所表示的修饰符信息,在该类中提供了一系列用来解析的静态方法,既可以查看是否被指定的修饰符修饰,还可以以字符串的形式获得所有修饰符。
Modifier类中的常用解析方法:

静态方法 说明
isPublic(int mod) 查看是否被public修饰符修饰,如果是返回true,反之返回false
isProtected(int mod) 查看是否被protected修饰符修饰,如果是返回true,反之返回false
isPrivate(int mod) 查看是否被private修饰符修饰,如果是返回true,反之返回false
isStatic(int mod) 查看是否被static修饰符修饰,如果是返回true,反之返回false
isFinal(int mod) 查看是否被Final修饰符修饰,如果是返回true,反之返回false
toString(int mod) 以字符串形式返回所有修饰符

首先创建变量,并且创建些许构造方法和一个toString方法。

public class Study {
   
	int id;
	String name;
	double price;

	// 创建无参构造方法
	public Study() {
   
		super();
	}

	// 创建有一个参数的构造方法
	public Study(int id) {
   
		super();
		this.id = id;
	}

	// 创建私有的并且有三个参数的构造方法
	private Study(int id, String name, double price) {
   
		super();
		this.id = id;
		this.name = name;
		this.price = price;
	}

	public String toString() {
   
		return "Study [id=" + id + ", name=" + name + ", price=" + price + "]";
	}

}

再创建一个Study2类来反射上面创建好的Study类

public class Study2 {
   

	public static void main(String[] args) {
   
		try {
   
			Class c = Class.forName("study.czm.Study");//创建class对象
			//获取构造方法
			Constructor cos[] =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值