Well I don't know why is it suggested so as in the mail by Paul,
But as I already mentioned :



----- Forwarded Message -----
From: Prince Sewani <[email protected]>
To: "[email protected]" <[email protected]> 
Sent: Tuesday, March 20, 2012 5:46 PM
Subject: Re: loop code simplification
 
Well If we're talking about the 'Enhanced For loop' in Java from 1.5 onwards
Then it goes something like this, you'll only get NPE if you haven't 
initialized the collection,
otherwise if you've initialized the collection and there are no values in it 
then 

the for loop won't execute any iteration.

For example : 


import java.util.ArrayList;

class Test{

static ArrayList<String>t;

    public static void main(String [] args){

            System.out.println("before===========");
        
        for(String k : t){
            System.out.println("===="+k);
        }                

            System.out.println("after===========");

    }

}


The above program will  generate an NPE when ran and the output will be :

before===========
Exception in thread "main" java.lang.NullPointerException
    at Test.main(Test.java:11)



but if I replace the ArrayList declaration with :

static ArrayList<String> t = new ArrayList<String>();

then the output will be  :

before===========
after===========

Hope this helps.

Regards
Prince

Java does take care of it. 

Regards
Prince



________________________________
 From: Jacques Le Roux <[email protected]>
To: [email protected] 
Sent: Tuesday, March 20, 2012 8:36 PM
Subject: Re: loop code simplification
 
BTW, this shows how stupid is the for loop in Java implementation. The 
suggested safeList() should be handled by the compiler IMO, I
see no gains to not have it in but to get NPEs. Did I miss something?

Jacques

From: "Paul Foxworthy" <[email protected]>
> Hi Erwan,
>
> To be sure there is no Null Pointer Exception, yes, you need to test for
> null first. One possibility is to just let the NPE happen.
>
> The discussion at
> http://stackoverflow.com/questions/2250031/null-check-in-an-enhanced-for-loop
>
> suggests
>
> for( Object o : safe( list ) ) {
>   // do whatever
> }
>
> Where safe would be:
>
> public static List safe( List other ) {
>    return other == null ? Collections.EMPTY_LIST : other;
> }
>
> Cleaner code. I suspect the method would be inlined by most Java compilers.
>
> Cheers
>
> Paul Foxworthy
>
>
> Erwan de FERRIERES-3 wrote
>>
>> Hi,
>>
>> I'm trying to remove a lot of iterators, and use the for-each syntax,
>> which exists since java 1.5.
>> During my journey, I found a lot of double tests for a while like this
>> one:
>>
>> while (typePurposes != null && typePurposes.hasNext()) {
>> (ContactMechWorker.java line 606)
>>
>> Can it be simplified to for(GenericValue contactMechTypePurpose :
>> theList) ? Or should I keep it like it is ?
>>
>> Regards,
>>
>> -- 
>> Erwan de FERRIERES
>> www.nereide.biz
>>
>
> -----
> --
> Coherent Software Australia Pty Ltd
> http://www.cohsoft.com.au/
>
> Bonsai ERP, the all-inclusive ERP system
> http://www.bonsaierp.com.au/
>
> --
> View this message in context: 
> http://ofbiz.135035.n4.nabble.com/loop-code-simplification-tp4487741p4488324.html
> Sent from the OFBiz - Dev mailing list archive at Nabble.com.

Reply via email to