Вы получаете следующую ошибку:
java.util.Date нельзя преобразовать в com.google.cloud.Timestamp
Поскольку в вашей базе данных свойство timestamp имеет тип Date
и , а не Timestamp
. В Java нет способа привести объект типа Date к объекту типа com.google.firebase.Timestamp , потому что между ними нет отношений наследования.
Чтобы решить эту проблему, вам нужно получить это свойство как Date
, используя следующую строку кода:
Date timestamp = snapshot.getDate("timestamp");
Изменить:
Когда вы устанавливаете поле типа timestamp, вы устанавливаете его как Timestamp , который является частью другого пакета. Смотрите, class Timestamp extends Date
. Таким образом, объект отметки времени is-a Date, поскольку он наследуется от класса Date .
В заключение, класс Timestamp из пакета com.google.firebase
отличается от класса Timestamp от пакета java.sql
, который в терминах отличается от Timestamp класс, который существует в пакете java.security
.
Edit2:
Согласно вашему комментарию, при использовании:
(java.util.Date) snapshot.get("timestamp");
Это означает, что объект, возвращаемый snapshot.get("timestamp")
, преобразуется в Date
, что в основном является тем же самым. Другими словами, вы говорите компилятору, что независимо от того, какой объект возвращается, считайте его Date
объектом. И это работает, потому что тип вашей собственности в базе данных Date
и , а не Firebase Timestamp
.