Re: Enum Idiom Question
On 29-05-2010 17:20, Rhino wrote:
"Arne Vajh?j"<arne@vajhoej.dk> wrote in message
news:4c006f2d$0$278$14726298@news.sunsite.dk...
On 28-05-2010 20:43, Rhino wrote:
"Arne Vajh?j"<arne@vajhoej.dk> wrote in message
news:4c005ae9$0$281$14726298@news.sunsite.dk...
On 28-05-2010 19:02, Rhino wrote:
It's the if statement that concerns me here. This code works fine (I
can
test for CompletionStatus.NO_ERROR by simply changlng the right side of
the
if) but it doesn't look right. It reminds me of mistakes I made when I
was
new to Java comparing Strings to each other via the == operator to see
if
they had the same VALUE but discovering that == doesn't determine
equality
of value.
Is there a better way to do this if statement? If so, what is it?
I would compare with CompletionStatus.NO_ERROR, because it is
a lot more likely that you will have more than one error status
than more than one no error status.
Okay, that's fair. But am I writing the comparison correctly? That ==
operator looks wrong somehow, even if it works. I'm concerned that this
might be like comparing two Strings with the == operator; sometimes it
will
show equality and make you think it is confirming equality of value
between
the two strings but it is not; you have to use equals() to compare String
values. But I'm not sure what the equivalent is for an enum.
== on enums are fine.
Object identity is exactly what is needed.
Thank you, Arne! I wasn't able to find that idiom anywhere I looked so it's
good to hear I got it right although I expect that was more luck than brains
;-)
By the way, WHERE is that documented? The Enum class in the Java API
includes an equal() method and the tutorials I read about enum and the Sun
site don't mention that idiom at all...
That is actually a good question.
I am sure that you can find it in the JLS (Java Language
Specification).
Same in the enum JSR for Java 1.5.
You can also see it if you examine the generated byte code
or look at the source of Enum.java.
Neither should be necessary for such a basic question.
Heavy googling managed to find:
http://java.sun.com/docs/books/tutorial/reflect/special/enumSetGet.html
<quote>
Since the enum constants are singletons, the == and != operators may be
used to compare enum constants of the same type.
</quote>
But that was not obvious.
I am afraid that the answer is that most Java programmers either
use one of the first mentioned methods or know somebody that does.
Arne