在我的ActiveAndroid ORM数据库中编译我的类时,我遇到了这个错误:
警告:(33,50)非varargs调用varargs方法,最后一个参数的参数类型不精确; 转换为Object以进行varargs调用 转换为Object []以进行非varargs调用并禁止此警告
这是指的方法:
public static ChildMedicine getChildMedicine(Child child, Medicine medicine)
{
return new Select()
.from(ChildMedicine.class)
.where("Child = ? AND Medicine = ?", new Long[]{child.getId(), medicine.getId()})
.executeSingle();
}
我想从ActiveAndroid ORM数据库表中返回所有ChildMedicine对象,其中Child列等于传入的子参数的Long Id,而Medicine列等于传入的医学参数的Long Id。
我建议用这样的显式数组创建wrap vararg参数:
public static ChildMedicine getChildMedicine(Child child, Medicine medicine)
{
return new Select()
.from(ChildMedicine.class)
.where("Child = ? AND Medicine = ?", new Object[]{new Long[]{child.getId(), medicine.getId()}})
.executeSingle();
}
但是,这会不会导致我的Select()方法无法正常工作,因为我现在有一个包含两个Long数组的数组,而不是方法where部分的两个Long数组?
我有点困惑!
非常感谢任何帮助...
谢谢, 萨姆
答案 0 :(得分:1)
如果不知道where
方法的签名,我无法确定,但看起来你需要的是:
return new Select()
.from(ChildMedicine.class)
.where("Child = ? AND Medicine = ?", new Object[]{child.getId(), medicine.getId()})
.executeSingle();
这假设where
的签名是where (String str, Object... params)
。
应该有效的另一种选择:
return new Select()
.from(ChildMedicine.class)
.where("Child = ? AND Medicine = ?", child.getId(), medicine.getId())
.executeSingle();
我建议用显式数组创建包装wrap vararg参数
不,那不是你的建议。建议您将Object
或Object[]
传递给where
,具体取决于您是希望将Long[]
视为单个参数还是多个参数。传递包含单个Object[]
元素的Long[]
毫无意义。