以下文本来自“有效的Java”,第2项:
Java中的传统Abstract Factory实现是
Class
对象,其中newInstance
方法扮演了
构建方法。这种用法充满了问题。 newInstance
方法总是尝试调用类的无参数
构造函数,甚至可能不存在。您没有编译时间
如果类没有可访问的无参数构造函数,则错误。
而是,客户端代码必须处理InstantiationException
或
IllegalAccessException
在运行时很丑陋且不方便。
另外,newInstance
方法传播由
即使newInstance
缺少
相应的throws
子句。换句话说,Class.newInstance
中断
编译时异常检查。上面显示的Builder界面,
纠正这些缺陷。
请转到this link以获取全文。
我已经能够遵循“换句话说,..”之前的所有内容。有人可以解释一下newInstance
如何中断编译时异常检查以及Builder模式如何解决它。
最佳答案
“ newInstance”不像在普通的类方法那样会提前(在编译时)知道会引发什么异常(由于代码依赖关系的构建方式,并且因为一个类必须弄清楚它抛出的异常) 。
Builder模式使用一个接受请求的类(通常通过一种方法),并根据步骤(很可能在该类中定义)创建一个新的对象实例。
从概念上讲,非抽象工厂与建筑商非常相似。
关于java - Class.newInstance中断编译时异常检查,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51015257/