【注解和反射】通过反射动态创建对象、调用普通方法、操作属性

继上一篇博客【注解和反射】获取类运行时结构-优快云博客

目录

八、通过反射动态创建对象

测试:通过反射动态创建对象

思考:难道没有无参的构造器就不能创建对象了吗?只要在操作的时候明确的调用类中的构造器并将参数传递进去之后,才可以实例化操作。

测试

测试:通过反射调用普通方法、通过反射操作属性


八、通过反射动态创建对象

在Java中,通过反射可以动态地创建对象,而不需要在编译时知道要创建的对象的具体类。以下是使用Java反射API创建对象的基本步骤:

  1. 获取Class对象: 首先,需要获取代表想要创建对象的类的Class对象。这可以通过几种方式之一来完成:

    • 使用.class语法,如果类名已知。
    • 使用Class.forName()方法,通过类的全限定名(包括包名)获取Class对象。这在类名在运行时才知道的情况下很有用。
  2. 检查访问权限: 如果该类或其构造函数不是可访问的(即不是public),则需要通过调用setAccessible(true)方法来临时允许访问。请注意,这种做法可能会违反Java的安全性原则,应谨慎使用。

  3. 获取Constructor对象: 接下来,需要获取Constructor对象,该对象表示类的构造函数。这可以通过调用Class对象的getDeclaredConstructor()方法来完成,该方法可以接收构造函数的参数类型作为参数。如果想要获取的是公共构造函数,则可以使用getConstructor()方法。

  4. 创建实例: 一旦获得了Constructor对象,就可以调用它的newInstance()方法来创建类的新实例。如果构造函数需要参数,那么这些参数需要传递给newInstance()方法。

测试:通过反射动态创建对象

创建一个User类,

class User{
  private String name;
  private int id;
  private int age;

  public User(String name, int id, int age) {
    this.name = name;
    this.id = id;
    this.age = age;
  }

  public User() {
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public int getId() {
    return id;
  }

  public void setId(int id) {
    this.id = id;
  }

  public int getAge() {
    return age;
  }

  public void setAge(int age) {
    this.age = age;
  }

  @Override
  public String toString() {
    return "User{" +
      "name='" + name + '\'' +
      ", id=" + id +
      ", age=" + age +
      '}';
  }
}
public class Test06 {
  public static void main(Stri
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

水w

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

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

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

打赏作者

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

抵扣说明:

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

余额充值