У меня есть класс Java со статическим методом конечного GETALL:Как Java генерирует подписи для методов?
public static final Vector<Category> getAll(Context context, ContentValues where) {
ArrayList<Integer> IDs = null;
if(where != null && where.containsKey(DatabaseAdapter.KEY_PRODUCT)) {
IDs = OvertureItem.getAll(context, DatabaseAdapter.TABLE_PRODUCT_CATEGORY, new String[] { DatabaseAdapter.KEY_CATEGORY }, where);
} else {
IDs = OvertureItem.getAll(context, DatabaseAdapter.TABLE_CATEGORIES, where);
}
Vector<Category> categories = new Vector<Category>();
for(Integer id: IDs) {
categories.add(Category.get(context, id));
}
return categories;
}
Теперь я хочу передать в нуль в качестве значения для где statemant так, что он будет просто игнорировать позже в коде. Во всяком случае в TestCase для этого метода у меня есть:
Vector<Category> categories = Category.getAll(context, null);
Который затем в свою очередь, дает мне NoSuchMethodError. Я точно не знаю, почему это так. Единственное, что я мог себе представить, это то, что нуль, который я подаю, не соответствовал бы сигнатуре вышеуказанного метода. Но как я могу это преодолеть? Я уже думал о перегрузке. Но это только закончится переписыванием большей части кода. По крайней мере, когда я это делаю, как я думаю.
Любые предложения по этому вопросу?
Phil
P.S. Это трассировки стека я получаю:
java.lang.NoSuchMethodError: com.sap.catalogue.model.Category.getAll
at com.sap.overture.test.model.CategoryTest.testGetAll(CategoryTest.java:59)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:430)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)
Посмотрите на выход логарифма. Было исключение, вызванное каким-либо другим сбоем, например. ошибка проверки? – fadden