This is all a bit tricky.

Just thinking laterally for a second. Have you thought about using
Collections instead of arrays?

On Feb 10, 11:32 am, jsegal <jason.se...@issinc.com> wrote:
> Unfortunately, this won't work due to the bug I referenced earlier
> (sorry, I must have cut it out of the quoted section).
>
> This will compile, but will throw a ClassCastException due to a known
> bug (http://code.google.com/p/google-web-toolkit/issues/detail?
> id=1822):
> new MySerializableObject<Integer[]>(new Integer[] {1})
>
> As suggested in the issue comments, it's possible to work around this
> by creating another class, which is a reasonable way to solve the
> problem for arrays of most types:
>
> class MySerializableArrayObject<T extends Serializable> extends
> MySerializableObject<T[]>
> {
>          private Serializable serializableArrayField[];
>
>          void MySerializableObject(T[] value)
>          {
>                serializableArrayField= value;
>          }
>
>          T[] getField()
>          {
>                return serializableArrayField;
>          }
>
> }
>
> The class above makes this work (for Integer, or any other non-
> primitive type):
> new MySerializableArrayObject<Integer>(new Integer[] {1});
>
> . . .But won't fix the problem for primitive types, since it is not
> possible to type the array version of the object for use with
> primitives:
> new MySerializableArrayObject<int>(new int[] {1}); //This won't
> compile, of course
> new MySerializableArrayObject<Integer>(new int[] {1}); //Nor will
> this, since int[] can't be autoboxed to Integer[]
>
> If you're suggesting that I can replace all uses of int[] with Integer
> [] in the existing code (at least the parts that need to interact with
> this class), you are technically correct. This will, however, leave a
> significant maintenance hazard for anyone else working on the app. I
> can document the problem, but given the context in which these classes
> are used, it would be tough to do so in enough places that anyone
> wanting to use primitive arrays would notice it. That's why I'm
> looking for a better work-around.
>
> I'm currently planning to make variations on MySerializableArrayObject
> to specifically handle each type of primitive array. I don't think
> this will cover some edge-cases, such as multidimensional arrays, but
> it looks like it may be the best solution available for now. If
> someone can suggest a better one, I'm still very interested.
>
> On Feb 9, 3:53 pm, Dan Ox <danoxs...@gmail.com> wrote:
>
> > Have you tried:
> > new MySerializableObject<Integer[]>(new Integer[] {1});
>
> > ?
>
> > On Feb 10, 4:13 am, jsegal <jason.se...@issinc.com> wrote:
>
> > > You're correct that primitives themselves will not work, but they can
> > > be autoboxed using their Object versions. My problem is with *arrays*
> > > of primitive types, which *can* be used as parameters for for generic
> > > classes, and should (according to everything I've found on the
> > > subject) be serializable.
>
> > > You're right that this will not compile:
> > > new MySerializableObject<int>(1);
>
> > > This will compile, however:
> > > new MySerializableObject<int[]>(new int[]{1});
>
> > > As will this (due to autoboxing):
> > > new MySerializableObject<Integer>(1);
>
> > > On the other hand, arrays cannot be autoboxed, so this will not
> > > compile:
> > > new MySerializableObject<Integer[]>(new int[]{1});
>
> > > On Feb 6, 6:10 pm, Ben Tilford <bentilf...@gmail.com> wrote:
>
> > > > Primitives do not extend Object and cannot implement Serializable. You
> > > > should use the Object versions of primitives (i.e. use Integer instead 
> > > > of
> > > > int)
> > > > I don't think the code would even compile if you tried to use a 
> > > > primitive
> > > > with generics.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to Google-Web-Toolkit@googlegroups.com
To unsubscribe from this group, send email to 
google-web-toolkit+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/Google-Web-Toolkit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to