我有一段代码如下所示"
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 方法。
有人知道如何调试吗?