【发布时间】:2012-03-20 23:54:19
【问题描述】:
我在发布此问题之前搜索了 StackOverflow,但找不到正确答案。抱歉,如果这是转发。我的问题是这样的:
我的 java 类中有一个方法被重载:
class ABC{
public boolean doSomething(String path, ArrayList<SomeObject> objList){
// calling the method below in a loop
}
public boolean doSomething(String path, SomeObject obj){
// Some code here
}
}
我从我的 groovy 代码中调用上述类,如下所示:
void performDoSomething(ABC abc, String path, String[] strList){
def list = []
for (str in strList) {
SomeObject sObj = new SomeObject(str) // EDIT: sorry I missed this line before
list.add(sObj)
}
if (abc) abc.doSomething(path, list)
}
问题在于 groovy 编译器正在调用 abc.doSomething(String str, SomeObject obj) 方法而不是 abc.doSomething(String str, ArrayList objList) 方法。
我正在使用带有 grails 插件 (STS) 的 eclipse IDE,这是一个更大的 grails 项目的一部分(我们公司在 java 中有很多遗留代码)。
关于如何解决此问题的任何想法?
感谢您的宝贵时间!
编辑:我试过了 abc.doSomething(路径,列表为 ArrayList) 也是,但我得到了相同的结果..
【问题讨论】:
-
Groovy 真的应该把
String[]变成ArrayList<Object>吗? -
对不起,我打错了,我现在改了
-
Groovy 是否应该将 [] 转换为 ArrayList
-
如您所见,我正在使用字符串创建“SomeObject sObj = new SomeObject(str)”并将 sObj 添加到列表中。
-
您的代码适用于我 - 调用正确的方法,无需更改。现在,我没有使用 Eclipse,我只是在 vim 中编写了两个 java 类,并在命令行中编译,然后从命令行将 groovy 部分作为脚本运行——但这一切似乎都很好。哦,顺便说一句,groovy 确实默认为 [] 创建一个 ArrayList(它需要是一个要实例化的具体类,所以 List 不会这样做......)