Because Servlet is an interface, not an abstract class. Constructor arguments cannot be specified on an interface, so ServletContext must be specified on a regular method signature.
This allows the application server to know how to properly initialize the servlet implementation.
Another solution would be a requirement, but not mandatory at compile time, for a constructor taking a ServletContext. Then the application server will call the constructor through reflection. However, the developers of the Servlet specification did not choose this path.
Darron
source share