The original code looks like:

class Foo {
  private int depth;

  void begin() {
    depth++;
    if (depth == 1)  {  //
      if (!isCondition) {
        bar.baz();
      }
    }
  }
}

depth is the lhs of the expression and is should be a primitive.

On Thu, Sep 23, 2010 at 5:15 PM, Chris Conroy <[email protected]> wrote:

> Comparing reference equality for Integer objects in Java is a bit of a
> minefield...
>
>     Integer x = 1;
>     Integer y = 1;
>     System.out.println("1==1? " + (x==y ? "yes" : "no"));
>
>     x = 127;
>     y = 127;
>     System.out.println("127==127? " + (x==y ? "yes" : "no"));
>
>     x = 128;
>     y = 128;
>     System.out.println("128==128? " + (x==y ? "yes" : "no"));
>
> the above code produces:
> 1==1? yes
> 127==127? yes
> 128==128? no
>
> because Java interns integers from -127 to 127.
>
> On Thu, Sep 23, 2010 at 4:36 PM, Scott Blum <[email protected]> wrote:
>
>> This actually gives me pause.  What kind of code can leave primitives on
>> one side but not the other?
>>
>> I'm concerned because in Java, I think this should be true:
>>
>> Integer.valueOf(1) == 1
>>
>> Because the RHS gets autoboxed.  If we're translating this as-is into JS
>> triple-equals without boxing it, the test would fail.
>>
>>  --
>> http://groups.google.com/group/Google-Web-Toolkit-Contributors
>>
>
>


-- 
Eric Z. Ayers
Google Web Toolkit, Atlanta, GA USA

-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to