1

我有一段代码如下所示"

public enum MyEnum {
    EXAMPLE("example1", false, -1L);
    private final String name;
    private final boolean deprecated;
    private final long id;
...
}
...
MyEnum myenum = MyEnum.EXAMPLE;
try {
    params.put("myenum", myenum);
    JSONArray paramArray = new JSONArray();
    paramArray.put(0, params);
    JSONObject request = new JSONObject();
    request.put("params", paramArray);
    log.info(request.toString());

} catch (JSONException e) {
    e.printStackTrace();
}

如果我直接使用 java -cp Bla Main.Class 运行此代码,我会得到预期的输出:

{"params":[{"myenum":"example1"}]}

但是,当我使用 Gradle 将它构建到一个超级 jar 中时,我得到:

{"params":[{"myenum":"EXAMPLE"}]}

因此,类路径和 org.json 的竞争版本似乎有一些巫术。在第一种情况下,正确应用了枚举的 toString,在第二种情况下,枚举使用了默认的 toString 方法。

有人知道如何调试吗?

4

0 回答 0