Добавьте Arraylists вместе, созданный вызовом метода - PullRequest
0 голосов
/ 28 октября 2018

Я знаю, что на этом форуме уже есть несколько вопросов, касающихся моего вопроса, но ни один из них не кажется мне действительно полезным.

Поскольку я новичок в программировании, я все еще пытаюсь выяснить, чтоименно getClass() и getMethod() звонки помогают мне.

Чего я хочу достичь:

// init:
List<Preview> listPreview;
List<Preview> listTemp;

// now create the Lists (from a Database)
listPreview = dbHelper.getPreview("Hero", "Axe");
listTemp = dbHelper.getPreview("Hero", "Beastmaster");

// now I want to add ListTemp to ListPreview
Class myClass = listPreview.getClass();
Method m = myClass.getDeclaredMethod("add", new Class[] {Object.class});
m.invoke(listTemp, 2);

Проблема:

Очевидно, что сейчас это не работает, , но я думаю, что идея довольно проста.Я хочу добавить listTemp к listPreview . getDeclaredMethod уже считается необъявленным исключением. Я не совсем понимаю, почему.

Ответы [ 4 ]

0 голосов
/ 28 октября 2018

Ошибка

getDeclaredMethod уже считается необъявленным исключением

Это означает, что существует исключение, о котором не сообщается, которое должно быть перехвачено или объявлено как выброшенное.

ниже приведен полный образец:

         try {
           Class myClass = listPreview.getClass();
           Method m = myClass.getDeclaredMethod("addAll", Collection.class);
           m.invoke(listPreview, listTemp);
         }
         catch (Throwable e) {
            System.err.println(e);
         }
0 голосов
/ 28 октября 2018

Это относительно просто.Почему бы вам не использовать listPreview.addAll(listTemp);.Это добавит все элементы из listTemp в listPreview.

0 голосов
/ 28 октября 2018

Если вы хотите добавить элементы List с вашим подходом, используйте следующий код:

Class myClass = listPreview.getClass();
Method m = myClass.getDeclaredMethod("addAll", Collection.class);
m.invoke(listPreview, listTemp);

ИЛИ Для более простого способа вы можете использовать

listPreview.addAll(listTemp);
0 голосов
/ 28 октября 2018

Если вы хотите добавить два списка один за другим, просто используйте это:

 listPreview.addAll(listTemp);
...