反射之------获得运行时类的指定构造方法以及创建对象的操作

复制代码
package com.heima.userJSTL;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

public class GetConstrect {
    public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
        //获取当前运行时类的指定构造器,并创建该构造器的对象(这种方法并不常用我们一般的使用的是直接通过
        // 当前运行时类的静态方法newInstance();直接创建一个对象,(底层还是使用的空参构造))
        Class<Person> aClass = Person.class;
        Constructor<Person> declaredConstructor = aClass.getDeclaredConstructor(String.class);//构造方法不需要区分方法名,参数只需要形参列表
       //暴力反射设置该构造器可以被访问
        declaredConstructor.setAccessible(true);
        Person person = declaredConstructor.newInstance("张三");
        System.out.println(person);

        //但是我们常用的穿件对象的方法是直接使用当前运行时类的Class对象的.newInstance();方法进行创建对象
        Person person1 = aClass.newInstance();
        System.out.println(person1);
        //使用当前运行时类的Class对象的.newInstance();方法的前提是:
        //1.必须要有空参构造器
        //2.空参构造的权限修饰符要够,一般是public

    }
}
复制代码

 

posted @ 2020-10-09 10:56  Joker-0927  阅读(153)  评论(0)    收藏  举报
编辑推荐:
· 没有调度器的协程不是好协程,零基础深入浅出 C++20 协程
· 别做抢活的导演:代码中的抽象层次原则
· 从 Redis 客户端超时到 .NET 线程池挑战
· C23和C++26的#embed嵌入资源指南
· 「EF Core」框架是如何识别实体类的属性和主键的
阅读排行:
· 博客园众包线下沙龙第1期:云栖开发者基地,共建技术新天地
· 别做抢活的导演:代码中的抽象层次原则
· .NET周刊【7月第1期 2025-07-06】
· Claude Code如何集成到VSCode、PyCharm IDE及使用技巧
· 基于外卖系统的RBAC实现
// 侧边栏目录
点击右上角即可分享
微信分享提示