Firebase数据库异常:Artist类缺失无参构造函数问题求助
解决Firebase DatabaseException:类未定义无参构造函数的问题
这个问题我之前也碰到过,原因很明确——Firebase Realtime Database在将JSON数据映射到Java对象时,必须依赖无参构造函数来创建对象实例,之后才会通过反射给字段赋值。你的Artist类只定义了带参构造函数,没有默认的无参构造,这就导致Firebase无法完成对象实例化,直接抛出了异常。
解决方案:给Artist类添加无参构造函数
只需要在Artist类中补充一个空的无参构造函数即可,即使是空实现也能满足Firebase的要求。修改后的代码如下:
package com.rcpl.agni; /** * Created by Dell-pc on 23-01-2018. */ public class Artist { String artistId; String artistName; String artistGenre; // 新增无参构造函数,Firebase需要它来实例化对象 public Artist() { } public Artist(String artistId, String artistName, String artistGenre) { this.artistId = artistId; this.artistName = artistName; this.artistGenre = artistGenre; } public String getArtistId() { return artistId; } public String getArtistName() { return artistName; } public String getArtistGenre() { return artistGenre; } }
额外注意事项(如果使用ProGuard)
如果你的项目开启了ProGuard代码混淆,一定要确保这个无参构造函数不会被混淆工具移除。可以在ProGuard配置文件中添加如下规则:
-keepclassmembers class com.rcpl.agni.Artist { public <init>(); }
这条规则会告诉ProGuard保留Artist类的无参构造函数,避免被误删导致再次出现异常。
内容的提问来源于stack exchange,提问作者SHIVAM VARSHNEY
相关产品推荐
相关产品推荐

