Regarding the toString(), that was a good suggestion for something to check.
Below is the ICF class (I did trim some stuff out that the enterprise might not
like me sharing), and it does define a toString() method, but I don't think it
can print just "Null" as coded and calling getClass() wouldn't be throwing a
NullPointerException, but it is.
import java.io.Serializable
import java.util.List;
import org.apache.commons.lang.builder.ToStringBuilder
class ICF implements Serializable {
private static final long serialVersionUID = 1L
boolean active
String printName
String code
String toString() {
return (new ToStringBuilder(this))
.append("active", active)
.append("printName", printName)
.append("code", code)
.toString()
}
}
-----Original Message-----
From: OC [mailto:[email protected]]
Sent: Wednesday, July 13, 2016 10:27 AM
To: [email protected]; Scott Arnold <[email protected]>
Subject: Re: Non-Null Object Is Null
Scott,
I might be wrong, but it looks like your ICF returns a null toString -- your
result can be repeated e.g., by this code:
===
class Uhoh {
String toString() { null }
}
def icf=new Uhoh()
System.out.println("is icf null? " + (icf == null)); System.out.println("is icf
not null? " + (icf != null)); System.out.println("what is icf? " + icf); ===
Trick is, toString() is what "print icf" implicitly does. To know more about
the object, you might try e.g.,
===
println "icf is some ${icf.getClass()}"
System.out.println("icf is some " + icf.getClass()); // about the same in
Javaish ===
All the best,
OC
On 13. 7. 2016, at 17:01, Scott Arnold <[email protected]> wrote:
> I'm new to Groovy (lots of Java experience but almost no Groovy experience)
> and maybe there is something very basic I am missing here, but I am running
> into the following issue in a Grails app (but I think it's a not
> understanding Groovy issue). I'm not sure I can break it down any further
> than I already have, so I am kind of stumped about what I am doing wrong here.
>
> In case you know Grails and want some detail on where this code is happening,
> I'm working on a pre-existing Grails app that calls a service from the
> BootStrap.groovy during application startup. The code I'm having a problem
> with is within the service class.
>
> Here's the code snippet:
>
> System.out.println("is icf null? " + (icf == null));
> System.out.println("is icf not null? " + (icf != null));
> System.out.println("what is icf? " + icf);
>
> And here's the output:
>
> is icf null? false
> is icf not null? true
> what is icf? Null
>
> If I try to call a method on icf, I get a NullPointerException. However,
> earlier in the code icf is created (currently it is created Java-style rather
> than using def, as in ICF icf = new ICF()) and the code tries to set several
> property values within icf (e.g. icf.code = suchandsuch) and none of that
> throws any errors.
>
> What might be happening here?
>
> Thanks.