In GWT Boolean, Double and String are represented using their unboxed 
primitive types.

See for Double:
https://github.com/gwtproject/gwt/blob/master/user/super/com/google/gwt/emul/java/lang/Double.java#L130
https://github.com/gwtproject/gwt/blob/master/user/super/com/google/gwt/emul/java/lang/Double.java#L211
https://github.com/gwtproject/gwt/blob/master/dev/core/src/com/google/gwt/dev/jjs/impl/RewriteConstructorCallsForUnboxedTypes.java

So when compiled to JavaScript Double.equals() would be called with 
primitive types and that's why it can generally do an instance equality 
check. However Double.NaN is represented using JavaScript NaN 
(see: 
https://github.com/gwtproject/gwt/blob/master/user/super/com/google/gwt/emul/java/lang/Double.java#L35
 
) and in JavaScript NaN == NaN is always false. 

So I would consider it an emulation bug and equals() needs to check for NaN 
and handle it correctly with regard to Java behavior. Feel free to create a 
bug for it on GitHub.

-- J.


blackh...@gmail.com schrieb am Donnerstag, 25. März 2021 um 09:38:28 UTC+1:

> Can someone help me with the double.equals
> with the following simple code:
>       Double value1 = Double.NaN;
>       Double value2 = Double.NaN;
>
>       boolean result1 = value1.equals(value2);
>
> In Java result1 = true;
> In web with GWt result1 = false;
>
> Looking at the sourcecode i see that the java double has the following 
> equals method:
> public boolean equals(Object obj) { 
> <http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/tip/src/share/classes/java/lang/Double.java#l797>
>  
> return (obj instanceof Double) 
> <http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/tip/src/share/classes/java/lang/Double.java#l798>
>  
> && (doubleToLongBits(((Double)obj).value) == 
> <http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/tip/src/share/classes/java/lang/Double.java#l799>
>  
> doubleToLongBits(value));
>
> <http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/tip/src/share/classes/java/lang/Double.java#l800>
>  
> }
>
> the GWT double source code shows the following:
> @Override
> public boolean equals(Object o) {
> return checkNotNull(this) == o;
> }
>
> I do not really understand the GWT version. th emost important thing is 
> that the equals has different results between java and GWT.
> How to resolve this?
>
> Regards,
>
> Jasper
>

-- 
You received this message because you are subscribed to the Google Groups "GWT 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-web-toolkit+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-web-toolkit/033df899-31e5-42f0-9e00-7ed1474d5313n%40googlegroups.com.

Reply via email to