Java Arraylist 在 get() 上丢失 methods/fields

Java Arraylist loses methods/fields on get()

我有一个名为 Trip 的自定义 class,它有几个 getter 方法,所有 public。 我将几个 Trip 对象添加到 ArrayList:

public ArrayList<Trip> routeIndex;

当使用以下代码回调这些 Trip 对象之一时,出现访问错误。

    Trip abc = routeIndex.get(0);
    for (Field field : abc.getClass().getDeclaredFields()) {
        field.setAccessible(true);
        String name = field.getName();
        field.setAccessible(true);
        Object value = field.get(abc);
        System.out.printf("Field name: %s, Field value: %s%n", name, value);
    }

这是对象值行上的以下错误:

unreported exception java.lang.IllegalAccessException; must be caught or declared when thrown

我有什么地方可能出错的想法吗?

您应该在 filed.get(abc) 周围添加 try/catch 块,因为方法 filed.get(Object obj) 会抛出 IllegalAccessException 并且您应该处理它。

所以你只需要将 Object value = field.get(abc); 更改为

Object value = null;
try {
    value = field.get(abc);
} catch (IllegalAccessException e) {
    e.printStackTrace();
}

而且效果很好。