java 反射 创造对象 构造方法

一、获取

1、语法

// 获取多个构造方法
class对象.getConstructors() // 获取所有 public 构造方法
clss对象.getDeclaredConstructors()  //获取所有 构造方法,包括private

// 获取指定构造方法
class对象.getConstructor(...参数类型.class) // public构造, 参数是参数类型的class对象,参数数量>=0
class对象.getDeclaredConstructor(...参数类型.class) // private构造, 参数是参数类型的class对象,参数数量>=0

2、案例

@Test
public void getCon() throws NoSuchMethodException {
    // 获取对象
    Class<Person> personClass = Person.class;
    //所有构造方法包括私有
    Constructor<?>[] constructors = personClass.getDeclaredConstructors();
    for (Constructor<?> constructor : constructors) {
        System.out.println(constructor);
    }
    // public构造方法
    Constructor<Person> constructor = personClass.getConstructor(String.class, Integer.class);
    System.out.println("constructor = " + constructor);
    // private构造方法 
    Constructor<Person> constructor1 = personClass.getDeclaredConstructor(String.class);
    System.out.println("constructor1 = " + constructor1);
}

二、创建对象(指定构造方法)

1、语法

构造方法对象.newInstance(...构造方法实参);

注意:私有的构造方法要

构造方法对象.setAccessible(true);

2、案例

@Test
public void constructorUse() throws Exception {
    Class<Person> personClass = Person.class;
    // public 构造方法
    Constructor<Person> constructor = personClass.getConstructor(String.class, Integer.class);
    Person instance = constructor.newInstance("渴念", 10);
    System.out.println(instance);
    // private 构造方法
    Constructor<Person> constructor1 = personClass.getDeclaredConstructor(String.class);
    constructor1.setAccessible(true);
    Person instance1 = constructor1.newInstance("风间彻");
    System.out.println(instance1);
}

 

posted @ 2025-04-21 21:23  市丸银  阅读(24)  评论(0)    收藏  举报