【发布时间】:2010-09-16 18:09:05
【问题描述】:
Ryan Delucchi 在Tom Hawtin 的评论#3 中询问here 的回答:
为什么 Class.newInstance() 是“邪恶的”?
这是对代码示例的响应:
// Avoid Class.newInstance, for it is evil.
Constructor<? extends Runnable> ctor = runClass.getConstructor();
Runnable doRun = ctor.newInstance();
那么,为什么它是邪恶的?
【问题讨论】:
-
实际上看到了这个问题的答案:人们可以这样说反射的各种用途......不仅仅是 Class.newInstance()。所以这实际上是一个普遍的观察,即“反射击败了编译时检查”......这通常是反射的重点。
-
现在的孩子们,哦,是的,他们到处乱写“邪恶”这个词,但他们甚至从未见过 COBOL 或 FORTRAN 程序!你想“邪恶”看看 20 年前的 FORTRAN 程序,它是由具有模拟背景且没有 CS 影响的修补程序从一个项目传递到另一个项目的!现在是“邪恶!”
标签: java constructor runtime instantiation