Tooling 中级

从 Class.newInstance() 迁移到构造器反射

使用显式构造器查找和调用替代已弃用的 Class.newInstance()。

✕ Deprecated Class.newInstance()
Plugin plugin = pluginClass.newInstance();
✓ Constructor reflection
Plugin plugin = pluginClass
        .getDeclaredConstructor()
        .newInstance();
发现此代码有问题? 告诉我们。
✅

受支持的 API

不再使用已弃用的 Class.newInstance()。

🎯

显式构造器

请求的签名清晰可见,并且可以接受参数。

🛡

如实报告失败

构造器异常通过 InvocationTargetException 表示。

旧方式
Class.newInstance()
现代方式
显式查找构造器
自 JDK
9
难度
中级
从 Class.newInstance() 迁移到构造器反射
可用

自 JDK 9(2017 年 9 月)弃用 Class.newInstance() 起推荐使用。

Class.newInstance() 已被弃用,因为它可能绕过编译期对构造器所抛异常的检查,并且只支持无参构造器。显式查找 Constructor 可清楚展示所选签名,并通过适当的反射异常报告反射调用失败。模块和访问规则仍然适用;此模式不建议绕过封装。