我知道这个论坛中已经有几个问题与我的问题有关,但是似乎没有一个问题对我有帮助。
由于我是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
已经被认为是一个未声明的异常,我不太明白为什么。
答案 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);
}