2
私はJavaでオブジェクトを作成し、それをGroovyShellの変数として設定します。 GroovyでGroovyオブジェクトをJavaメソッドに渡す
// in java file, create class and shell
//
class Foo {
void addSomething(Bar bar) { ... }
}
shell.setVariable("foo", new Foo())
私はバーから延び、addSomething()
を呼び出すしよう新しいクラスを作成します。
class MyBar extends Bar
{
...
}
foo.addSomething(new MyBar())
このようなもので失敗します。
groovy.lang.MissingMethodException: No signature of method: static foo.addSomething() is applicable for argument types: (MyBar) values: [[email protected]]
たぶん、静的な部分は私を投げているが、私はエラーを理解していません。 Groovyで作成したサブクラスをaddSomethingに渡す必要があるかもしれないと思っていましたが、オブジェクトを渡してみました。私はJavaクラスから作成しました。 Groovyで作成したオブジェクトを、変数として設定したJavaクラスに渡すことはできませんか?
両方のクラスで同じBarクラスが参照されていると仮定すると、唯一の問題はFooクラスのaddSomething()のスコープです。覚えておいてください、それはJavaであり、そのためスコープは重要です(パッケージ外から呼び出されるため) –