为什么我们必须覆盖 Servlets 中的 init() 方法,而我们可以在构造函数中进行初始化,并让 web 容器调用构造函数,同时调用构造函数将 ServletConfig 引用传递给 servlet?
当然容器必须为此使用反射,但容器无论如何都必须使用反射来调用简单的无参数构造函数
最佳答案
由于构造函数不能是接口(interface)的一部分,因此与普通方法不同,它不能在 Servlet API 中“正式”指定。而且,由于Java没有析构函数,所以无论如何都需要一个destroy
方法,所以定义了对应的init
方法,使得API更加一致、易用。
使用反射来检测/验证构造函数参数只会使事情不必要地复杂化,而且我看不到任何附加值。