2013-03-08 123 views
1
ServletContext context=getServletContext(); 

这里ServletContext是接口。清除ServletContext的内容context = getServletContext();

上下文是ServletContext的

getServletContext的类型是在ServletContext接口的方法返回有关servlet的信息。

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

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

请提前一步说明谢谢?

+4

不,'getServletContext'是'ServletRequest'接口中的一个方法。感觉实际上你的问题更多地是关于接口,而不是servlet。我建议你在继续使用servlet之前阅读关于接口的Java教程。 – 2013-03-08 20:43:32

+0

你的问题不是很清楚。首先,在ServletContext接口中没有方法'getServletContext()'(参见[javadoc](http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContext.html))。你澄清你后面的内容? – beny23 2013-03-08 20:44:55

+1

@JonSkeet:或者可能在'ServletConfig'中...... – beny23 2013-03-08 20:46:07

回答

0

你的问题是How can we create an object for interface?
Answer is :我们不能创建接口(任何接口)的对象,但我们可以给接口实现类的对象的引用(这是有效的,并给出了多态和继承在OOPS)
我会建议阅读Head First Core Java以更好地理解所有这些事情。
我们不能在接口之后调用new关键字并以分号结尾例如:

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类匿名类。