解决这个问题,和类序列化时报错以样的,有了其他的构造方法,就必须填写一个无参的构造方法。
在使用xutil3的数据库模块的时候出现报错org.xutils.ex.DbException: <init> []
问题原因:创建数据库的bean在生成有参数的构造方法时覆盖了没参数的构造方法
解决:生成不带参数的构造方法
这个问题遇到不止一次了,但是每次遇到又忘记了,因为这个提示不明不白的也没说明是什么原因造成的,所以每次都又折腾老半天,这里记录下,以防下次又遇到
原来报错的代码如下
try {
List<Student> students = mDbManager.selector(Order.class).findAll();
} catch (DbException e) {
e.printStackTrace();
}
@Table(name="student")
private class Student {
@Column(name = "id", isId = true)
public int id;
@Column(name = "name")
public String name;
@Column(name = "age")
public int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
}
报错的原因是Student没有一个public的空构造方法导致的,因为xUtils3框架是利用反射通过空构造方法来生成对象的,而如果没有空构造函数,或者构造函数不为public则无法通过反射生成对象,就会报错
所以数据库bean类的正确写法如下所示,不管空构造函数是否用到,保留着是个好习惯
@Table(name="student")
private class Student {
@Column(name = "id", isId = true)
public int id;
@Column(name = "name")
public String name;
@Column(name = "age")
public int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
}