2015-03-01 2 views
1

При компиляции моего класса, который является таблицей в моей базе данных ActiveAndroid ORM Я получаю эту ошибку:Путаница в отношении упаковки моих списков параметров аргумента

Предупреждения: (33, 50), не переменные аргументы вызова метода с переменным числом аргументов с неточным типом аргумента для последний параметр; броска на объект для списков параметров вызова отлитых в Object [] для не-списков параметров вызова и подавить это предупреждение

Вот метод, который это относится к:

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(); 
} 

Я хочу, чтобы вернуть все объекты ChildMedicine из моей таблицы базы данных ActiveAndroid ORM, где столбец «Дети» равен длинному идентификатору для переданного в дочернем аргументе, а столбец «Медицина» равен длинному идентификатору для переданного в медицине аргумента.

Я предложил, чтобы обернуть аргументы обертка 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() метод не правильно работать, как я теперь есть массив из двух Длинные массивы вместо длинного массива из двух Longs в той части метода?

Я немного смущен!

Любая помощь очень ценится ...

Спасибо, Sam

ответ

1

Я не могу быть уверен, что, не зная подпись метода where, но мне кажется, что вам нужно:

return new Select() 
     .from(ChildMedicine.class) 
     .where("Child = ? AND Medicine = ?", new Object[]{child.getId(), medicine.getId()}) 
     .executeSingle(); 

Это, если подпись where is where (String str, Object... params).

Другой вариант, который должен работать:

return new Select() 
     .from(ChildMedicine.class) 
     .where("Child = ? AND Medicine = ?", child.getId(), medicine.getId()) 
     .executeSingle(); 

I am suggested to wrap the wrap vararg arguments with explicit array creation

Нет, это не то, что вы предложили. Вам предложили либо пройти Object, либо Object[] до where, в зависимости от того, хотите ли вы, чтобы ваш Long[] рассматривался как один аргумент или несколько аргументов. Передача Object[], которая содержит один элемент Long[], не имеет смысла.

+0

Большое спасибо. Подпись где is - public From where (java.lang.String clause, java.lang.Object ... args) – samleighton87

Смежные вопросы