2016-05-25 15 views
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クラスに渡すことはできませんか?

+0

両方のクラスで同じBarクラスが参照されていると仮定すると、唯一の問題はFooクラスのaddSomething()のスコープです。覚えておいてください、それはJavaであり、そのためスコープは重要です(パッケージ外から呼び出されるため) –

答えて

0

私はgroovyに渡していた変数名がファイル名と一致していて、ファイル名が変数を突き詰めていたことがわかりました。ファイルや変数の名前を変更することで、問題なくオブジェクトを渡すことができました。

関連する問題