如何在Java类中将Groovy类的实例分配给变量

时间:2016-09-20 17:34:22

标签: java grails groovy

我有一个像这样的Groovy类:

package com.hello

class MyClass {
    def myMethod() { println "hello" }
}

我想在Java类中使用这个类:

package com.hello

public class OtherClass {
    MyClass myc;

    public void myOtherMethod {
        myc.myMethod(); // <-- Raises NullPointerException
    }
}

当我运行此代码时,它会抛出NullPointerException,因为myc为空。当我尝试这个时:

...
MyClass myc = new MyClass();
public void myOtherMethod {
    myc.myMethod(); // <-- Raises NullPointerException
}
...

我仍然得到NullPointerException。如何在我的java类中使用这个groovy类?

1 个答案:

答案 0 :(得分:0)

    package com.hello

    public class OtherClass 
    {
         MyClass myc=new MyClass();

        public void myOtherMethod() {
            myc.myMethod();
        }
    }

在OtherClass是Java的情况下,无论MyClass是groovy还是Java,都应该可以正常工作。

如果您仍然在调用myMethod()时使用此代码获取NPE,那么您遇到了构建问题。请尝试以下操作:

  • 将您的groovy代码重新编译为类
  • 将java重新编译为一个类,确保你的groovy类当时可用于javac。
  • 如果您使用java运行,请确保groovy-all jar在您的类路径中(如果您使用groovy运行它将是自动的)

不处理构建问题(或推迟处理它们)的最简单方法是使用Groovy插件在eclipse中编码并直接从Eclipse运行,这应该始终有效。