修复了已弃用的 Java newInstance()

Des*_*ert 2 java deprecated

Java 代码来自https://github.com/forcedotcom/wsc包含一些已弃用的用于创建新实例的代码

传输是一个接口

public interface Transport {

}
Run Code Online (Sandbox Code Playgroud)

......

        Transport t = (Transport) config.getTransport().newInstance();
        t.setConfig(config);
        return t 
Run Code Online (Sandbox Code Playgroud)

我尝试使用修复的方法

        Transport t = (Transport) config.getTransport().getDeclaredConstructor().newInstance();
        t.setConfig(config);
        return t
Run Code Online (Sandbox Code Playgroud)

这会创建一个警告“未经检查地调用 getDeclaredConstructor(Class..) 作为原始类型 'java.lang.Class' 的成员”

我正在寻找更好的方法来修复这个已弃用的调用。

这段代码不是我写的。它提供与 Salesforce.com 的 Java SOAP 连接。我已经编写了自己的代码以将其与 Java 8 一起使用,但是,我认为更新代码以与 Java 9+ 一起使用会很有用

Des*_*ert 10

感谢您的出色建议

我通过以下方式应用了这些建议,以使其更易于阅读

        Class<?> transClass = config.getTransport();
        Transport t = (Transport) transClass.getDeclaredConstructor().newInstance();
        t.setConfig(this);
Run Code Online (Sandbox Code Playgroud)