所以我在这里做一个排序并使用内部类实现 Comparator 接口,exceptionMessage 和 didJsonParsingFailed 是在内部类外部声明的变量,现在 java 不允许使用内部类访问局部变量,所以这给了我一个错误,但是当我将这两个变量设为原子变量“AtomicReference”和“AtomicBoolean”时,在这种情况下程序运行良好,我无法理解其背后的原因。使其成为 Atomic 有何帮助?java是否允许访问内部类中的AtomicVariables。
PS-我必须在我的 catch 块中修改这些变量,所以我不能让它成为最终的
Collections.sort(list, new Comparator() {
private static final String KEY_NAME = "createdDateTime";
@Override public int compare(Object o1, Object o2) {
String str1;
String str2;
Date d1 = new Date();
Date d2 = new Date();
try {
str1 = (String) ((JSONObject) o1).get(KEY_NAME);
str2 = (String) ((JSONObject) o2).get(KEY_NAME);
d1 = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss").parse(str1);
d2 = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss").parse(str2);
} catch (JSONException | ParseException e) {
exceptionMessage = "xyz";
didJsonParsingFailed = true;
}
return d1.compareTo(d2);
}
});