【问题标题】:Clear Expanation for ServletContext context=getServletContext();清除 ServletContext 的扩展 context=getServletContext();
【发布时间】:2013-03-08 20:41:10
【问题描述】:
ServletContext context=getServletContext();

这里的 ServletContext 是接口。

Context是ServletContext的类型

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

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

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

请先一步一步解释谢谢?

【问题讨论】:

  • 不,getServletContextServletRequest 接口中的一个方法。感觉实际上您的问题更多地是关于接口而不是特别是 servlet。我建议您在进一步使用 servlet 之前阅读有关接口的 Java 教程。
  • 你的问题不是很清楚。首先,ServletContext 接口中没有方法getServletContext()(请参阅javadoc。你能澄清一下你在追求什么吗?
  • @JonSkeet: 或者可能在ServletConfig...

标签: java servlets


【解决方案1】:

您的问题是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。

【讨论】:

    【解决方案2】:

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

    希望这个解释有所帮助。

    【讨论】:

      【解决方案3】:

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

      答案是不能。

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

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

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

      【讨论】:

        猜你喜欢
        • 2013-05-24
        • 1970-01-01
        • 2020-09-28
        • 2020-05-15
        • 2015-11-27
        • 1970-01-01
        • 1970-01-01
        • 2018-06-06
        • 2015-01-21
        相关资源
        最近更新 更多