将通过方法调用创建的 Arraylists 添加在一起

Add Arraylists together created by a method call

我知道这个论坛中已经有一些问题与我的问题有关,但其中 none 似乎确实对我有帮助。

由于我是 Coding 新手,所以我仍在努力弄清楚 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 已经被认为是未声明的异常我不太明白为什么。

如果你想一个接一个地添加两个列表,只需使用这个:

 listPreview.addAll(listTemp);

这个比较简单。为什么不使用 listPreview.addAll(listTemp);。这会将 listTemp 中的所有元素添加到 listPreview

如果你想用你的方法添加List的元素,使用下面的代码。

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

或 更简单的方法,你可以使用

listPreview.addAll(listTemp);

错误是

getDeclaredMethod is already considered a undeclared exception

这意味着必须捕获或声明抛出未报告的异常。

下面是一个完整的示例:

         try {
           Class myClass = listPreview.getClass();
           Method m = myClass.getDeclaredMethod("addAll", Collection.class);
           m.invoke(listPreview, listTemp);
         }
         catch (Throwable e) {
            System.err.println(e);
         }