【问题标题】:Java Arraylist loses methods/fields on get() [duplicate]Java Arraylist 在 get() 上丢失方法/字段 [重复]
【发布时间】:2017-05-18 02:25:08
【问题描述】:

我有一个名为 Trip 的自定义类,它有几个 getter 方法,所有内容都是公开的。 我将几个 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

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

【问题讨论】:

  • 这称为检查异常。您必须在这些调用周围包裹一个 try/catch 块。
  • 另外,您可以在函数上声明throws,以允许应用程序在不改变其行为的情况下进行编译。
  • “我遇到编译器错误”如何转换为标题的“Java Arraylist 在 get() 上丢失方法/字段”?

标签: java arraylist methods illegalaccessexception


【解决方案1】:

您应该在 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();
}

而且效果很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    • 1970-01-01
    相关资源
    最近更新 更多