我想知道为什么我们不调用servlet构造函数而不是init方法来初始化配置参数。
谢谢
该线程应阐明差异。
引用以下更具启发性的帖子之一:
init()方法通常用于执行servlet初始化-创建或加载servlet在处理其请求时使用的html" target="_blank">对象。为什么不使用构造函数呢?好吧,在JDK
1.0(最初为其编写servlet)中,动态加载的Java类(例如servlet)的构造函数不能接受参数。因此,为了向新的Servlet提供有关其自身及其环境的任何信息,服务器必须调用Servlet的init()方法并传递实现ServletConfig接口的对象。另外,Java不允许接口声明构造函数。这意味着javax.servlet.Servlet接口无法声明接受ServletConfig参数的构造函数。它必须声明另一个方法,例如init()。它’
问题内容: 为什么我们必须在Servlets中重写init()方法,同时可以在构造函数中进行初始化,并让Web容器调用构造函数,同时在调用构造函数时将ServletConfig引用传递给Servlet? 当然,容器必须为此使用反射,但是容器仍然必须使用反射来调用简单的无参数构造函数 问题答案: 由于构造函数不能是接口的一部分,因此与常规方法不同,不能在Servlet API中“正式”指定构造函数。
我的代码中只有参数化构造函数,需要通过它进行注入。 我想刺探参数化构造函数以注入模拟对象作为junit的依赖项。 但我们有什么东西可以在构造函数中注入模拟对象并对其进行监视吗?。
问题内容: 我已经搜索了很多,并在此处给出的堆栈溢出中得到了这个答案 那说明我们可以同时使用构造函数和简单初始化 但我想要答案 但是,如果编译器自动完成构造函数初始化,为什么还要使用构造函数初始化呢! 问题答案: 构造函数的简单定义: 初始化类对象的特殊方法。始终且仅与关键字一起使用以创建类的实例。 与类的名称相同。 可以接受一个或多个参数。 没有返回值,甚至没有void。 默认构造函数不带任何参
问题内容: 我不明白为什么主要方法必须是静态的。我了解静态变量,但静态方法很难掌握。是否存在静态方法,以便人们可以在两个不会相互冲突的类中创建两个具有相同名称的方法? 另外,我不明白为什么我不能创建静态构造函数。 谁能帮助解释这个概念? 问题答案: Java有 [静态构造函数] 静态初始化块,可以将其视为“静态构造函数”: 无论如何,主类中唯一 必须 是静态的方法是方法。这是因为调用它之前 没有
问题内容: Java 1.5 的Java序列化规范说: 对于可序列化的对象,运行第一个不可序列化超类型的no- arg构造函数。对于可序列化的类,将字段初始化为适合其类型的默认值。然后,通过调用特定于类的readObject方法来恢复每个类的字段,如果未定义这些字段,则通过调用defaultReadObject方法来恢复它们。请注意,在反序列化期间,不会为可序列化的类执行字段初始化程序和构造函数。