Groovy: 无法设置 java 的属性
Groovy: unable to set properties from java
我正在开发 Grails 应用程序。我有一个具有一些属性的 Groovy bean。我正在尝试使用 setter 方法从 Java class 实例化和设置一些属性。虽然我没有任何错误,但属性不包含任何值。我试图在调试模式下查看对象内容:groovy 对象包含 1 个唯一字段 (r$fields),其中包含一个空的 HashMap。
Groovy豆子
import java.time.LocalDateTime;
import groovy.transform.ToString;
@ToString(includeNames = true, ignoreNulls = true)
class Article {
String id
String modelId
String ean
String deepUrl
LocalDateTime lastUpdate
}
Java代码
a = new Article();
a.setId("123");
a.setModelId("456");
a.setEan("789");
a.setLastUpdate(LocalDateTime.now(Clock.systemUTC()));
执行完上面这段代码后对象a结果为空
在 Java 代码中添加 a.toString()
作为最后一条语句,我得到以下 NPE
Stacktrace follows: java.lang.NullPointerException at
org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:39)
at
org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
at
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
我找到了这个问题的解决方案,但我不太明白其中的原因。问题与变量 deepUrl 有关。删除代码后,代码就很有魅力了。我在 groovy 网络控制台上对其进行了测试,它有效 *https://groovyconsole.appspot.com/script/5656619568332800)。这可能与grails有关吗?
我正在开发 Grails 应用程序。我有一个具有一些属性的 Groovy bean。我正在尝试使用 setter 方法从 Java class 实例化和设置一些属性。虽然我没有任何错误,但属性不包含任何值。我试图在调试模式下查看对象内容:groovy 对象包含 1 个唯一字段 (r$fields),其中包含一个空的 HashMap。
Groovy豆子
import java.time.LocalDateTime;
import groovy.transform.ToString;
@ToString(includeNames = true, ignoreNulls = true)
class Article {
String id
String modelId
String ean
String deepUrl
LocalDateTime lastUpdate
}
Java代码
a = new Article();
a.setId("123");
a.setModelId("456");
a.setEan("789");
a.setLastUpdate(LocalDateTime.now(Clock.systemUTC()));
执行完上面这段代码后对象a结果为空
在 Java 代码中添加 a.toString()
作为最后一条语句,我得到以下 NPE
Stacktrace follows: java.lang.NullPointerException at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:39) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
我找到了这个问题的解决方案,但我不太明白其中的原因。问题与变量 deepUrl 有关。删除代码后,代码就很有魅力了。我在 groovy 网络控制台上对其进行了测试,它有效 *https://groovyconsole.appspot.com/script/5656619568332800)。这可能与grails有关吗?