使用Realm构建错误

时间:2016-05-22 11:00:30

标签: java android realm

使用Realm

构建代码时出现以下错误
  

:app:compileDebugJavaWithJavac注意:处理类   DataBaseQuestion错误:没有参数的默认公共构造函数   如果声明了自定义构造函数,则必须声明。注意:创建   DefaultRealmModule警告:类型' io.realm.DefaultRealmModule'的文件   在上一轮创建的不会受到注释   处理。警告:文件类型   ' io.realm.DefaultRealmModuleMediator'在上一轮创建将   不受注释处理。 2警告错误:执行   任务失败':app:compileDebugJavaWithJavac'。

     
    

编译失败;有关详细信息,请参阅编译器错误输出。

  

注意:我的模型或Java Bean类中已存在默认构造函数。

任何人都可以帮我解决这个问题吗?

DataBaseQuestion.java

public class DataBaseQuestion extends RealmObject{

int id;
String Question =null;
String QuestionNo =null;
List<String> optionList=null;
String typeOfQuestion=null;
String Answer = null;
String Explanation = null;

DataBaseQuestion()
{


}
public DataBaseQuestion(int id, String question, String questionNo, List<String> optionList, String typeOfQuestion, String answer, String explanation) {
    this.id = id;
    Question = question;
    QuestionNo = questionNo;
    this.optionList = optionList;
    this.typeOfQuestion = typeOfQuestion;
    Answer = answer;
    Explanation = explanation;
}




public String getQuestion() {
    return Question;
}

public void setQuestion(String question) {
    Question = question;
}

public String getQuestionNo() {
    return QuestionNo;
}

public void setQuestionNo(String questionNo) {
    QuestionNo = questionNo;
}

public List<String> getOptions() {
    return optionList;
}

public void setOptions(List<String> optionList) {
    this.optionList = optionList;
}

public String getTypeOfQuestion() {
    return typeOfQuestion;
}

public void setTypeOfQuestion(String typeOfQuestion) {
    this.typeOfQuestion = typeOfQuestion;
}

public String getAnswer() {
    return Answer;
}

public void setAnswer(String answer) {
    Answer = answer;
}

public String getExplanation() {
    return Explanation;
}

public void setExplanation(String explanation) {
    Explanation = explanation;
}

@Override
public String toString() {
    return "DataBaseQuestion{" +
            "Question='" + Question + '\'' +
            ", QuestionNo='" + QuestionNo + '\'' +
            ", options=" + optionList +
            ", typeOfQuestion='" + typeOfQuestion + '\'' +
            ", Answer='" + Answer + '\'' +
            ", Explanation='" + Explanation + '\'' +
            '}';
}

4 个答案:

答案 0 :(得分:9)

  

错误:必须声明没有参数的默认公共构造函数

您可以将所需的default constructor添加到指定的类并返回。

更改

DataBaseQuestion() {
}

public DataBaseQuestion() {
}

答案 1 :(得分:3)

你忘记了公共修饰符。

您的程序可能会尝试在程序包上下文之外到达它,这意味着它只查找公共构造函数。它找到一个 - 需要构造函数args的那个,但是没有看到包私有的。添加&#34; public&#34;访问修饰符应解决问题。

public DataBaseQuestion(){}

注意:您应该在业余时间查看lombok,这样您就不会手动处理getter,setter,AllArgsContsructors或NoArgsConstructors的创建

答案 2 :(得分:1)

此错误的另一个可能原因是定义了从RealmObject继承的包私有对象。

它失败的原因与前面提到的答案相同:默认构造函数是package-private,因此注释处理器无法访问。宣布班级公开修复它。

更改

class DataBaseQuestion extends RealmObject { }

public class DataBaseQuestion extends RealmObject { }

答案 3 :(得分:0)

这的另一个原因可能是在不同的包中错误地两次声明了该类。

如果您定义班级:

public class DataBaseQuestion extends RealmObject {
    ....
}

然后将您的代码复制到单独的目录中

或将其作为static类嵌套在另一个类中,则可以引发完全相同的错误。

相关问题