【问题标题】:How does method chaining work?方法链是如何工作的?
【发布时间】:2015-02-06 13:43:12
【问题描述】:

在下面的示例中,getRequestDispatcher("xxx") 是如何从 getServletContext() 调用的?像这样的调用程序一般是如何工作的?请给我一个关于这种情况的清晰图片。

RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/index.jsp");
dispatcher.include(request, response);

【问题讨论】:

标签: java jsp servlets calling-convention method-call


【解决方案1】:

getServletContext() 返回一个ServletContext 对象,该对象有一个名为getRequestDispatcher() 的方法。您的代码行只是两个方法调用的简写,等效于以下代码:

ServletContext context = getServletContext();
RequestDispatcher dispatcher = context.getRequestDispatcher("/index.jsp");

【讨论】:

    【解决方案2】:

    一般来说,method chaining 是实现fluent 和灵活接口的好习惯。 通常......要实现它,您只需执行代码并返回当前对象。例如,在 Java 中:

    public Criterios<T> setOrdem(String campo, String direcao) {
        getOrdenacao().set(campo, direcao);
        return this;
    }
    
    public Criterios<T> setOrdem(String campo) {
        return setOrdem(campo, Ordenacao.Direcao.ASC);
    }
    
    public final Criterios<T> setPagina(int pagina) {
        getPaginacao().setPagina(pagina);
        return this;
    }
    
    public final Criterios<T> setQuantidade(int quantidade) {
        getPaginacao().setQuantidade(quantidade);
        return this;
    }
    

    返回当前对象一遍又一遍地提供相同的 API...但是,通过每次迭代,对象都会一步一步、有序地改变。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-11
      • 2019-05-20
      • 2012-04-21
      • 2016-07-26
      • 2018-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多