在 java 中的字符串中附加值

Appending values in a string in java

我有一个 REST API 测试套件,其中重复使用了某些 URI。因此,我创建了一个单独的 class 和 public static final 成员。类似于:

  public class RestURI {
        public RestURI(){}
        public static final String getAllShipsURI = "/ship/manager/ships";
        public static final String getAllPortsURI = "/port/manager/ports";
    }

但是,有没有办法像这样处理 URI:

/infrastructure/ships/docked/" + shipId + "/capacity

我正在寻找一种方法,以便我可以像上面那样在 RestURI class 中声明 URL,并且在我使用它们时仍然在测试中指定值。

您可以使用 String.format。像这样:

public class RestURI {
    public RestURI(){}
    public xxx() {
       int shipId = 219001000;
       ... String.format(dockedShipURIFormat, shipId) ...;
    }
    public static final String dockedShipURIFormat = "/infrastructure/ships/docked/%d/capacity";
}

您可以使用常量 格式 ,而不是字符串并使用静态 getter:

public static String getShipUri(int shipId) {
    return String.format("/infrastructure/ships/docked/%d/capacity", shipId);
}

我已经多次使用 ANTLR StringTemplate 来解决这个问题。在模板中进行内联宏解析和一些 if..else 逻辑的能力非常强大,并且保持了良好的可读性。