我在以下代码段上引发了ConcurrentModifcationException,根据我读到的导致此错误的原因(修改了开放迭代器的内容),这没有任何意义:

    List<Field> kibanaFields = Arrays.asList(KibanaRow.class.getSuperclass().getDeclaredFields());
    kibanaFields.addAll(Arrays.asList(KibanaRow.class.getDeclaredFields()));


第二行是它发生的地方。
我不明白这一点..即使第一行内部实现了一些迭代器,也应该在返回时关闭它并运行第二个方法。

此处的目的是获取字段名称的列表,然后在@JsonProperty的每个字段上添加KibanaRow注释的值。

最佳答案

我不了解CME的特殊原因。如果您向我们展示了堆栈跟踪,我们也许可以解决....

但是,您尝试执行的操作始终无法正常工作:

List<Field> kibanaFields
        Arrays.asList(KibanaRow.class.getSuperclass().getDeclaredFields());


这将创建一个由数组支持的列表。列表的大小是固定的。元素无法添加或删除。

kibanaFields.addAll(Arrays.asList(KibanaRow.class.getDeclaredFields()));


如果KibanaRow.class.getDeclaredFields()返回一个非空数组,则将尝试向kibanaFields添加更多元素。不可以应该有一个例外。

我发现的问题的一种解决方案是将asList结果的内容复制到新的ArrayList中;例如

List<Field> kibanaFields = new ArrayList<>(Arrays.asList(....));

07-24 09:17