背景在openjdk官网有一些废弃方法的解释https://cr.openjdk.java.net/~iris/se/9/latestSpec/api/deprecated-list.html今天介绍用的较多的2种。解决大家被要求做代码坏味道整改时不知所以然的问题。Class.newInstance()方法被弃用类的实例化有以下6种方式用new语句创建对象这是最常见的创建对象的方法。使用Class静态方法 Class.forName 方法使用 .loadClass() 方法使用newInstance方法运用反射手段,调用java.lang.Class的newInstance()实例方法。如Object obj Class.forName(“java.lang.Object”).newInstance();调用对象的clone()方法。无论何时我们调用一个对象的clone方法JVM就会创建一个新的对象将前面的对象的内容全部拷贝进去用clone方法创建对象并不会调用任何构造函数。要使用clone方法我们必须先实现Cloneable接口并实现其定义的clone方法使用反序列化通过I/O流包括反序列化如运用反序列化手段调用java.io.ObjectInputStream对象的 readObject()方法。但是第3种方法Class.newInstance()方法在Java9中被弃用不过不用担心有替代方案可调用Class类的getDeclaredConstructor()方法查看getDeclaredConstructor()的源码发现该方法可以传入类类型的可变参数应该是根据传入的参数类型去调用相应的构造方法而以前只能调用无参构造器。咱们先做个试验Version类的构造器要传入2个参数。实例化方法如下如果使用默认的方法进行实例化会抛出方法不存在异常使用Java9推荐的方法可以在编译期避免问题BigDecimal方法被重构Java9中对BigDecimal做重构纠正了之前不够专业的设计功能并没有变化。但是会导致两种被废弃代码。一种是下面的静态变量编程了枚举新枚举中的定义与原来不能说是十分相似简直就是一模一样只是位置和名称不同与之对应的原来是个int类型传参要改成枚举对应的方法也被废弃换成新的总结从以上两个比较有代表性的废弃用例中咱们可以看出用新方式替换是为了规范减少大家犯错的几率。对新增代码做严格要求我觉得没什么问题。但是很早之前写好的代码要全部改成新方式意义价值就没有那么大了。毕竟之前是经过生产长时间验证的稳定代码变更才是更大的风险。主次还是要分清的。编程一生因为公众号平台更改了推送规则如果不想错过内容记得读完点一下“在看”加个“星标”这样每次新文章推送才会第一时间出现在你的订阅列表里。想知道自己错过了哪些更新可参考我不定期更新的《系列文章分类汇总》。有想进「编程一生」用户交流群的朋友吗