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

时间:2018-01-26 10:12:07

标签: java methods overloading

我需要有多种方法采用不同的参数。是否有更简洁的方法来编写这些方法而不是分别声明它们中的每一个?我总共需要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 个答案:

答案 0 :(得分:7)

XWPFWordExtractorWordExtractor都扩展了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;
}

答案 1 :(得分:4)

编写一个方法,将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) {
  // ...
}

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

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