This week's book giveaway is in the Servlets forum.
We're giving away four copies of Murach's Java Servlets and JSP and have Joel Murach on-line!
See this thread for details.
The moose likes Beginning Java and the fly likes using Boolean objects Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Murach's Java Servlets and JSP this week in the Servlets forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "using Boolean objects" Watch "using Boolean objects" New topic
Author

using Boolean objects

Dorcas Rebanha
Greenhorn

Joined: Apr 04, 2007
Posts: 18
Is the following code correct:



If it's not correct, please provide a correct example. I'm trying to do something very simple, and maybe I'm overthinking it. But I'm not sure how to use a Boolean.

Thank you.
[ December 12, 2008: Message edited by: Dorcas Rebanha ]
Henry Wong
author
Sheriff

Joined: Sep 28, 2004
Posts: 18505
    
  40

The code in this "if" statement...



Will never run -- as a Boolean will never return true, when compared to a string. Perhaps, you meant to do this...



Henry


Books: Java Threads, 3rd Edition, Jini in a Nutshell, and Java Gems (contributor)
Mike Simmons
Ranch Hand

Joined: Mar 05, 2008
Posts: 2982
    
    9
If you're using JDK 5 or later, then this:

can also be written like this:

However both these bits of code share another problem with your original code above - they all throw a NullPointerException if authorized is null. (And so far, there's been no code shown setting it to anything, so yes, it's probably null.) So when using a Boolean like this, you generally need to either (a) test the reference before you use it, to see if it's null, or (b) write your code in a way that ensures the variable has been set non-null before you use it. However, both of these are somewhat error prone, as people can forget to check or ensure when they modify the code. Consequently I usually prefer to use a boolean primitive rather than a Boolean object - that way there's no possibility of null. Usually that's a good thing, I think.
Rob Spoor
Sheriff

Joined: Oct 27, 2005
Posts: 19649
    
  18

The safest way is the following:

Boolean.TRUE is a constant that represents true as a Boolean; there is also Boolean.FALSE.

By putting it first, and calling equals on it instead of the return value of getAuthorized(), you prevent any NullPointerExceptions (NPEs). It's always best to call equals on a constant like Boolean.TRUE or a String constant just to prevent NPEs:


SCJP 1.4 - SCJP 6 - SCWCD 5 - OCEEJBD 6
How To Ask Questions How To Answer Questions
Campbell Ritchie
Sheriff

Joined: Oct 13, 2005
Posts: 37913
    
  22
I would agree with Mike Simmonds; just write if (getAuthorised()) . . .

If you get a NullPointerException, that means there is another error somewhere, that you have forgotten to initialise whatever you were supposed to initialise.
By the way: the preferred naming style for that sort of method is "isAuthorised()".
Dorcas Rebanha
Greenhorn

Joined: Apr 04, 2007
Posts: 18
Thanks for all the help! You have given me what I needed, and taught me other stuff, too.
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: using Boolean objects
 
Similar Threads
Stopping a thread via command line
security check - authorization Security check on mothod and how to invoke javascript
Session Advice
Default values for Hibernate POJO fields using annotations?
Javascript nested function