将由方法调用创建的数组列表加在一起

时间:2018-10-28 06:10:25

标签: java android list arraylist method-invocation

我知道这个论坛中已经有几个问题与我的问题有关,但是似乎没有一个问题对我有帮助。

由于我是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已经被认为是一个未声明的异常,我不太明白为什么。

4 个答案:

答案 0 :(得分:1)

如果您要一个接一个地添加两个列表,只需使用此:

 listPreview.addAll(listTemp);

答案 1 :(得分:1)

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

答案 2 :(得分:1)

如果要使用方法添加List的元素,请使用以下代码。

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

或 为了更简单的方式,您可以使用

listPreview.addAll(listTemp);

答案 3 :(得分:1)

错误是

  

getDeclaredMethod已被视为未声明的异常

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

因此,下面是一个完整的示例:

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