代码之家  ›  专栏  ›  技术社区  ›  dsafas fsafasfsa

是否有一种更简洁的方法可以用不同的参数编写相同的方法?

  •  -1
  • dsafas fsafasfsa  · 技术社区  · 6 年前

    我需要有多个采用不同参数的方法。有没有一种更干净的方法来编写这些方法,而不是单独声明它们中的每一个?我总共需要4种相同的方法。我能写一个,但让它决定传递什么参数吗?或者我必须复制和粘贴前一个3次并更改参数。这里有两个

    public String findLogNumber(XWPFWordExtractor we) {
        int logIndex;
        int logIndexEnd;
        String logNumber = "";
        if (we.getText().contains("Log ")) {
            logIndex = we.getText().indexOf("Log ") + 4;
            logIndexEnd = logIndex + 5;
            logNumber = we.getText().substring(logIndex, logIndexEnd);
        }
        return logNumber;
    }
    
    public String findLogNumber(WordExtractor we) {
        int logIndex;
        int logIndexEnd;
        String logNumber = "";
        if (we.getText().contains("Log ")) {
            logIndex = we.getText().indexOf("Log ") + 4;
            logIndexEnd = logIndex + 5;
            logNumber = we.getText().substring(logIndex, logIndexEnd);
        }
        return logNumber;
    }
    
    2 回复  |  直到 6 年前
        1
  •  7
  •   Kayaman    6 年前

    二者都 XWPFWordExtractor WordExtractor 延伸 org.apache.poi.POITextExtractor 定义了 getText() 方法,所以对于那些需要 POITextExtractor 作为参数。

    // Handles at least the two methods shown.
    public String findLogNumber(POITextExtractor we) {
        int logIndex;
        int logIndexEnd;
        String logNumber = "";
        if (we.getText().contains("Log ")) {
            logIndex = we.getText().indexOf("Log ") + 4;
            logIndexEnd = logIndex + 5;
            logNumber = we.getText().substring(logIndex, logIndexEnd);
        }
        return logNumber;
    }
    
        2
  •  4
  •   Andy Turner    6 年前

    编写一个方法,该方法采用 we.getText() 作为一个 String ,并从其他两个方法调用:

    public String findLogNumber(XWPFWordExtractor we) {
      return common(we.getText());
    }
    
    public String findLogNumber(WordExtractor we) {
      return common(we.getText());
    }
    
    private String findLogNumber(String text) {
      // ...
    }
    

    当然,除非, XWPFWordExtractor WordExtractor 实现公共接口或扩展相同的类。在这种情况下:

    public String findLogNumber(CommonInterface we) { ... }