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 -~----------~----~----~----~------~----~------~--~---