Android App需要使用本地数据库,以前都是自己用android Sqlite原生代码实现。
前不久看同事使用LitePal库,发现挺好用的,就直接拿过来用,懒得自己再写代码了。
然后使用LitePal.where方法查询时,抛出异常:
org.litepal.exceptions.LitePalSupportException: java.util.List has no constructor. LitePal could not handle it
我有点摸不着头脑,网上搜了搜也没有结果。虽然每一句话我都懂,但就是不明白它在说什么!
我的实体里面包含一个泛型集合属性,List<T>这样的字段,我知道问题肯定是这个集合型的属性有关,但我就搞不懂什么叫“list没有构造器,LitePal不能处理它”!
谁说List没有构造器了?
这是上周五下午出的问题,烦恼了一下午。然后今天周一上班,下午才想起这个问题,仍然没有头绪。
就突然想起Java里面List好像是抽象类,确实没有构造器!这明明白白是LitePal试图用反射创建抽象类的对象时,抛出的异常。
无论是C#还是kotlin,我都习惯了用List,真的是想不起来还有这回事。
改成ArrayList就完事了。
文章讲述了作者在使用Android应用的LitePal库时遇到的问题,即在查询操作中因实体类包含泛型List字段而抛出异常。问题在于Java的List是抽象类无默认构造器,导致LitePal无法实例化。作者最终通过将List替换为具体实现的ArrayList解决了问题。
507

被折叠的 条评论
为什么被折叠?



