【问题标题】:Class java.util.List has generic type parameters, please use GenericTypeIndicator instead类 java.util.List 具有泛型类型参数,请改用 GenericTypeIndicator
【发布时间】:2017-02-19 22:47:32
【问题描述】:

我正在为我的 android 应用程序使用 Firebase 数据库。 我有实体:

   public class Goal  implements Serializable {
        private double averageSpeed;
        private long duration;
        private Date startDate;
        private Date endDate;
        private LinkedList <LatLng> locations;
    ...
    }

我正在尝试像这样从数据库中获取这些对象:

public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                Goal goal = dataSnapshot.getValue(Goal.class);
                goalAdapter.add(goal);
            }

然后我得到错误

类 java.util.List 有泛型类型参数,请使用 GenericTypeIndicator 代替异常

我的数据库的 JSON 结构:

    {
  "goals" : {
    "-KdPyQTvht4seniKUk6o" : {
      "averageSpeed" : 0,
      "distance" : 0,
      "duration" : 619,
      "endDate" : {
        "date" : 20,
        "day" : 1,
        "hours" : 12,
        "minutes" : 3,
        "month" : 1,
        "seconds" : 21,
        "time" : 1487585001328,
        "timezoneOffset" : -120,
        "year" : 117
      },
      "locations" : [ {
        "latitude" : 50.5066025,
        "longitude" : 30.4184
      }, {
        "latitude" : 50.506281,
        "longitude" : 30.4189611
      } ],
      "startDate" : {
        "date" : 20,
        "day" : 1,
        "hours" : 12,
        "minutes" : 2,
        "month" : 1,
        "seconds" : 44,
        "time" : 1487584964181,
        "timezoneOffset" : -120,
        "year" : 117
      }
    }
  }
}

如何更改我的代码以使一切正常?

【问题讨论】:

  • 你为什么使用原始的List
  • 我看到你在嵌套链表。这可能不是最好的主意。你能分享你正在阅读的 JSON 结构吗(作为文本,没有截图)?您可以通过单击your Firebase Database console 中的导出 JSON 链接轻松获取此信息。
  • 我在帖子中添加了 JSON 结构。有什么可以替代嵌套链表?

标签: android firebase firebase-realtime-database


【解决方案1】:

你让它变得比必要的更困难。仅当您在一次调用中从 DataSnapshot 中检索目标列表时,才需要 GenericTypeIndicator。如果你只需要一个目标,你可以在课堂上传递给getValue()

Goal goal = dataSnapshot.getValue(Goal.class);

当您使用它时,您可能希望将 List 更改为类型安全的集合:

private List<Goal> locations;

【讨论】:

    猜你喜欢
    • 2021-09-01
    • 2019-01-09
    • 2016-10-07
    • 2018-09-20
    • 2018-04-16
    • 1970-01-01
    • 2010-12-28
    相关资源
    最近更新 更多