Curtis Rueden wrote:
I did a bit more research, and found out some more interesting facts.
First, I added a straight Java serialization test to my test program.
This test produces files identical to VisADForm's serialization mode,
so therefore VisADForm serialization isn't "forcing" anything.
What is actually happening, I discovered, is that even though I'm
calling setSamples(double, boolean) to set my samples for the
"doubles" FlatField, they are getting packed back into floats in
FlatField.packValues, because the range type is set to floats.
It turns out that the range type is only set to doubles if the
provided *domain* set is a DoubleSet. This behavior seems somewhat
Therefore, my two FlatFields are actually identical. Although I'm
not sure how to construct a FlatField with a DoubleSet based on
Integer2DSet--so that when I call setSamples(double, boolean) it
preserves the doubles array without copying--VisBio does not need
that functionality anyway.
I think you can set the RangeSets in the FlatField constructor, or if the
rangeTypes have their own defaultSets. I don't think this has anything
to do with the domainSet of the FlatField as you mention above, but
I've been wrong before.