<div dir="ltr">Apparently, the  FIELDOFVIEW_DEFAULT_VALUE should be final (immutable).  I think the story is, you can modify elements of an ArrayList<Float>, but you can't modify the variable.<div><br></div><div>The magenta?  Looks wrong.  A final variable got overwritten.</div><div><span class="gmail-im" style="color:rgb(0,0,0)">##########################################<br>((((getFieldOfView().length > 0) && !getFieldOfViewList().equals(FIELDOFVIEW_DEFAULT_VALUE)) || !ConfigurationProperties.getStripDefaultAttributes()) /* ArrayList .x3d compare */ && !hasUSE())=false<br>getFieldOfView().length > 0=true<br>!getFieldOfViewList().equals(FIELDOFVIEW_DEFAULT_VALUE)=false<br>!ConfigurationProperties.getStripDefaultAttributes()=false<br>!hasUSE()=true<br></span><font color="#000000">getFieldOfViewList()=[0.0, 0.0, 20.0, 20.0]</font><br><font color="#ff00ff">FIELDOFVIEW_DEFAULT_VALUE=[0.0, 0.0, 20.0, 20.0]</font><br><font color="#000000">##############################</font><font color="#000000">############</font></div><div><font color="#000000"><br></font></div><div><font color="#000000">Later, the magenta is correct.  Why?</font></div><div><font color="#000000"><br></font></div><div><span class="gmail-im" style="color:rgb(0,0,0)">##########################################<br>((((getFieldOfView().length > 0) && !getFieldOfViewList().equals(FIELDOFVIEW_DEFAULT_VALUE)) || !ConfigurationProperties.getStripDefaultAttributes()) /* ArrayList .x3d compare */ && !hasUSE())=false<br>getFieldOfView().length > 0=true<br>!getFieldOfViewList().equals(FIELDOFVIEW_DEFAULT_VALUE)=false<br>!ConfigurationProperties.getStripDefaultAttributes()=false<br>!hasUSE()=true<br></span><font color="#000000">getFieldOfViewList()=[-1.0, -1.0, 1.0, 1.0]</font><br><font color="#ff00ff">FIELDOFVIEW_DEFAULT_VALUE=[-1.0, -1.0, 1.0, 1.0]</font><br><font color="#000000">##############################</font><font color="#000000">############</font></div><div><font color="#000000"><br></font></div><div><font color="#000000">Here's the definition of the variable:</font></div><div><br></div><div>/** MFFloat field named <i>fieldOfView</i> has default value <i>{-1f,-1f,1f,1f}</i> (Java syntax) or <i>-1 -1 1 1</i> (XML syntax). */<br>public static final ArrayList<Float> FIELDOFVIEW_DEFAULT_VALUE = new ArrayList<>(Arrays.asList(-1f,-1f,1f,1f));</div><div><br></div><div>See example code to test (it gets even worse, even arrays themselves are mutable.</div><div><br></div><div>import java.util.ArrayList;<br>import java.util.Arrays;<br><br>public class OArray {<br>        public static final ArrayList<Float> FIELDOFVIEW_DEFAULT_VALUE = new ArrayList<>(Arrays.asList(-1f,-1f,1f,1f));<br>        public static final float[] ARRAY_FIELDOFVIEW_DEFAULT_VALUE = new float [] {-1f,-1f,1f,1f};<br>        public static void main(String[] args) {<br>                System.out.println(FIELDOFVIEW_DEFAULT_VALUE);<br>                FIELDOFVIEW_DEFAULT_VALUE.set(0, 0f);<br>                FIELDOFVIEW_DEFAULT_VALUE.set(1, 0f);<br>                FIELDOFVIEW_DEFAULT_VALUE.set(2, 20f);<br>                FIELDOFVIEW_DEFAULT_VALUE.set(3, 20f);<br>                System.out.println(FIELDOFVIEW_DEFAULT_VALUE);<br>                System.out.print(<br>                                ARRAY_FIELDOFVIEW_DEFAULT_VALUE[0]+" "+<br>                                ARRAY_FIELDOFVIEW_DEFAULT_VALUE[1]+" "+<br>                                ARRAY_FIELDOFVIEW_DEFAULT_VALUE[2]+" "+<br>                                ARRAY_FIELDOFVIEW_DEFAULT_VALUE[3]);<br>                System.out.println("");<br>                ARRAY_FIELDOFVIEW_DEFAULT_VALUE[0] = 0f;<br>                ARRAY_FIELDOFVIEW_DEFAULT_VALUE[1] = 0f;<br>                ARRAY_FIELDOFVIEW_DEFAULT_VALUE[2] = 20f;<br>                ARRAY_FIELDOFVIEW_DEFAULT_VALUE[3] = 20f;<br>                System.out.print(<br>                                ARRAY_FIELDOFVIEW_DEFAULT_VALUE[0]+" "+<br>                                ARRAY_FIELDOFVIEW_DEFAULT_VALUE[1]+" "+<br>                                ARRAY_FIELDOFVIEW_DEFAULT_VALUE[2]+" "+<br>                                ARRAY_FIELDOFVIEW_DEFAULT_VALUE[3]);<br>                System.out.println("");<br>        }<br>}</div><div>$ java net/coderextreme/OArray<br>[-1.0, -1.0, 1.0, 1.0]<br>[0.0, 0.0, 20.0, 20.0]<br>-1.0 -1.0 1.0 1.0<br>0.0 0.0 20.0 20.0</div><div><br></div><div>So, yeah, Java socks!  The only thing that isn't final/mutable is variables.</div><div><br></div><div>Don't you love the C foundation Java is based on?</div><div><br></div><div>Anyone for Haskell?</div><div><br></div><div>John</div></div>