【发布时间】:2015-05-09 00:39:18
【问题描述】:
我正在开发一个 Grails 应用程序。我有一个带有一些属性的 Groovy bean。我正在尝试使用 setter 方法从 Java 类中实例化和设置一些属性。虽然我没有任何错误,但属性不包含任何值。我尝试在调试模式下查看对象内容:groovy 对象包含 1 个唯一字段 (r$fields),其中包含一个空的 HashMap。
Groovy Bean
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
堆栈跟踪如下:java.lang.NullPointerException at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:39) 在 org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
【问题讨论】:
-
请提供一些我们可以用来重现您的问题的代码。