Class.forName() 方法返回的是一个 Class 对象

Class.forName()用于获取类的Class对象,它是一个静态方法,接收类的全限定名作为参数。获取到Class对象后,可以进一步获取类的信息,如方法、属性,并执行相关操作。newInstance()方法可以创建类的新实例,但要求类有默认构造器。动态调用非静态成员需先创建实例。
摘要由CSDN通过智能技术生成

Class.forName() 方法返回的是一个 Class 对象,用于表示一个类的定义。在使用 forName() 方法时,需要传递一个字符串参数,表示要获取的类的全限定名。

由于 forName() 方法是一个静态方法,因此可以通过类名直接调用该方法,并不需要实例化对象。例如:

Class<?> clazz = Class.forName("com.example.MyClass");

在此示例中,Class.forName() 方法返回了名为 com.example.MyClass 的类的 Class 对象,并将其赋值给了 clazz 变量。

获取到一个 Class 对象之后,通常会使用该对象来获取该类中定义的方法、属性等信息,并进行相应的操作。例如,可以使用 getMethods() 方法获取该类中定义的所有公共方法:

 

Method[] methods = clazz.getMethods();

在上述代码中,clazz 是一个 Class 对象,通过调用 getMethods() 方法获取了该类中定义的所有公共方法,并将其赋值给了 methods 变量。

需要注意的是,由于 forName() 方法是一个静态方法,因此获取到的 Class 对象也是一个静态对象。因此,在使用该对象时通常也需要调用相应的静态方法,如 getMethods()getField() 等。这并不是因为 Class.forName() 获取到的类只能包含静态方法,而是因为 Class 对象本身是一个静态对象,其中包含的方法和属性也都是静态的。

如果要调用非静态方法或访问非静态属性,需要在获取到目标类的实例对象之后进行操作。例如,可以通过调用 newInstance() 方法创建一个新的实例,并在该实例上调用相应的方法或属性:

 

Object obj = clazz.newInstance(); Method method = clazz.getMethod("myMethod"); method.invoke(obj);

在上述代码中,newInstance() 方法创建了一个 MyClass 的新实例,并将其赋值给了 obj 变量。然后,通过 getMethod() 方法获取了 myMethod() 方法,并在新实例上调用该方法。

需要注意的是,使用 newInstance() 方法创建实例对象时,必须确保目标类具有默认构造函数,否则会抛出异常。如果目标类没有默认构造函数,应该使用其他构造函数来创建实例对象。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力努力在努力H

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值