ServletContext的Clear Expanation context = getServletContext();

时间:2013-03-08 20:41:10

标签: java servlets

ServletContext context=getServletContext();

这里的ServletContext是接口。

Context是ServletContext的类型

getServletContextServletContext接口中返回Servlet信息的方法。

这里我的问题是我们正在为接口创建一个上下文对象。我们如何为接口创建一个对象?

如果不是,我们正在为ServletContect创建对象,我们在这里做了什么 ServletContext和getServletContext()之间的映射是什么?

请提前一步一步解释?

3 个答案:

答案 0 :(得分:0)

您的问题是How can we create an object for interface?
Answer is :我们不能创建接口对象(任何接口)但我们可以分配接口实现类对象的引用(这是有效的,并在OOP中提供多态和继承)
我建议阅读 Head First Core Java 以更好地理解所有这些内容。
我们无法在界面后调用 new 关键字,并以分号Ex结尾。

ServletContext context = new ServletContext(); //invalid. cannot end with semicolon

但经过几次阅读后,你会发现一个像

这样的构造/语法
ServletContext context = new ServletContext() {    // see semicolon absent after ()

// and all methods here with some definition

};  

这是一个实现ServletContext接口的匿名类。

如果您看到像

这样的构造
Thread t = new Thread() {  //semicolon is absent after () bracket

};

表示它是一个扩展类Thread的匿名类。

答案 1 :(得分:0)

getServletContext不是ServletContext接口的方法。 ServletConfig正在实施GenericServlet接口的方法,因此HttpServlet中可以使用GenericServlet扩展ServletContextGenericServlet可能由Web服务器实现,它们可能会在{{3}}中返回该类的对象。

希望这个解释有所帮助。

答案 2 :(得分:0)

我认为您的问题是如何从界面创建对象。

答案不能。

但是我们可以使用接口名称,然后可以将接口的引用分配给类对象。

(这意味着我们可以创建匿名类(在对象内部))。

有关更多详细信息,请阅读javatpoint界面课程。