GloovyClassLoaderでStackOverflowError
なんていうかGroovyが使えないなーと思うのはこんなとこ。
まず、AというクラスをA.groobyというファイルに定義し、つぎにBというクラスをB.groovyというファイルに定義する。そしてAクラスとBクラスで相互にそのコード内でそれぞれ相手のインスタンスをnewしてやる。
// A.groovy class A { def b = new B() def hello() { println "Hello!" } def bye() { b.bye() } }
// B.groovy class B { def a = new A() def hello() { a.hello() } def bye() { println "bye" } }
そして以下のコードを実行してやると...
def a = new A() a.bye()
Exception in thread "main" java.lang.StackOverflowError at java security.AccessController.doPrivileged(Native Method) ...
かなりいけてない。
どうやらAクラスをロードする際にBクラスをロードしようとして、Bクラス中で使用するAクラスをロードしようとしてBクラスをロードしようとして、Bクラス中で使用するAクラスをロードしようとして...
かなりいけてない。