コンパイル済みの grails プロジェクトがあり、別の groovy プロジェクトから、次のようにドメイン クラスを反射的にロードします。
Class clazz = Class.forName('mypack.myclass', true, Thread.currentThread().contextClassLoader)
def newDomainObject = clazz.newInstance()
(私の別の groovy プロジェクトで) grails の外から実行すると、オブジェクトは GroovyObject として認識されません。
println newDomainObject instanceof GroovyObject // false
私は grails の外から実行しているので、groovy はドメイン クラスを他のクラスと同じように扱うと思います (クラス ファイルを見ると、GroovyObject が実装されています)。
私の推測では、これは grails がドメイン オブジェクトをコンパイルする方法と関係があると思われますが、ここで何が起こっているのかはわかりません。
これはWhy does Class.forName work on grails domain classesに関連していますが、同じではないことに注意してください。