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クラスをロードしようとして...
かなりいけてない。