在另一个groovy脚本中定义的访问方法

时间:2015-01-15 17:08:53

标签: groovy import

我有两个常规脚本AB

A看起来像:

import some.Class

//Some helper function
String doSomeWork(Integer input) {
    //does something with input and returns a String
    return "result: $input"
}

//Now do some real stuff here
println( doSomeWork(42) )

B我要导入A(在类路径中)并使用其doSomeWork

<击>     进口A.     println A //打印A类。这意味着我们可以在这里访问它。 =)     println(A.doSomeWork(45))//现在尝试调用As doSomeWork

但是最后一行导致异常:

Caught: groovy.lang.MissingMethodException: No signature of method: static A.doSomeWork() is applicable for argument types: (java.lang.Integer) values: [45]
Possible solutions: doSomeWork(java.lang.Integer)
groovy.lang.MissingMethodException: No signature of method: static A.doSomeWork() is applicable for argument types: (java.lang.Integer) values: [45]
Possible solutions: doSomeWork(java.lang.Integer)
    at B.run(B.groovy:3)

<击>

import A //Will execute As code
println A //prints class A. This means we can access it here. =)
println( (new A()).doSomeWork(45) ) //Now call As doSomeWork

如何在脚本A中成功调用doSomeWork s B

编辑:好的,我发现了。它不是静态方法,而是A的方法。所以(新的A())。doSomeWork(45)正在做这项工作。但是,这意味着导入A时,其所有代码都在B代码之前执行。我怎么能避免这种情况?我的目标是只使用A方法(显然不会访问任何A属性),而A不会产生任何其他副作用。

0 个答案:

没有答案