【发布时间】:2018-10-05 13:12:30
【问题描述】:
我有两个 ArrayList - ArrayList1 和 ArrayList2。它们中的每一个都充满了对象——分别是 Object1 和 Object2。 这两个对象都有方法“getText”。
对象1:
public String getText() { return "1";}
对象2:
public String getText() { return "2";}
在某些时候,我想使用相同的方法(只是使用不同的参数)遍历这些列表中的每一个。
loopThroughList(1)
loopThroughList(2)
如果我想调用一个方法,但我不知道它会是哪个对象,语法是什么?这是我到目前为止的代码:
for (Object o : lists.getList(listNumber)) {
System.out.println(o.getText());
}
它说 无法解析方法 getText。我搜索了一下,找到了另一个解决方案:
for (Object o : lists.getList(listNumber)) {
System.out.println(o.getClass().getMethod("getText"));
}
但这给了我 NoSuchMethodException 错误。即使“getText”方法是公开的。
编辑:为了获得正确的列表,我调用了不同对象(列表)的方法“getList”,它返回 ArrayList1 或 ArrayList2(取决于提供的参数)。
class Lists
public getList(list) {
if (list == 1) {
return ArrayList1;
}
else if (list == 2) {
return ArrayList2;
}
}
【问题讨论】:
-
创建一个声明
getText()方法的接口,让您的两个对象都实现它,然后将您的列表声明为List<NameOfTheInterface>。这样你就可以做for (NameOfTheInterface o : lists.getList(listNumber))并打电话给o.getText()。 -
lists是如何声明的?
标签: java class object nosuchmethoderror