Over here we went for subclassing Array to create a typed array class. There's some examples of a typed array class in the documentation.
--- In [email protected], "gtuhl" <[EMAIL PROTECTED]> wrote: > > I'll try to keep this brief and clear, bear with me and please request > additional information if it would help. We came across a situation > in a very large Flex2 application where we wanted to know the types of > items inside of collections at runtime. I can provide more details if > desired, but in short we are doing a lot of automatic detection of > object and property types to make a "running locally on xml" version > of the product work with very little pain and very little extra > configuration. > > In Java 1.5, you can specify these types like this: > > List<ContactVO> foo; > > In Flex2, if you have something like this: > > var foo : ArrayCollection; > > There is obviously no way of discovering at runtime, by reading the > class definition, what types of objects are meant to be in that > ArrayCollection. > > So we took advantage of the metadata construct in Flex2 to create a > sort of annotation, which would make the Flex2 example look like this: > > [Collection(type="ContactVO")] > var foo : ArrayCollection; > > Now by reading the metadata of the property foo, we are able to > determine at runtime both that foo is an ArrayCollection, and that it > is meant to contain ContactVO object instances. This doesn't have the > Java benefit of actually enforcing the fact that only ContactVOs are > in the collection, but it at least allows us to make very useful > convention-based assumptions. > > This is a pretty powerful option in my opinion, unfortunately Flex2 > blindly throws out all metadata it doesn't understand. Through some > google code searching, we were able to discover an obscure compiler > option that looks like this: > > -keep-as3-metadata+=Collection > > This option would then make it such that Flex does not throw out > [Collection] metadata. > > The problem is, this compiler option only works in DEBUG mode. In > debug mode all of our code affected by this works beautifully and > without fault (and would probably be a very useful tool to provide to > the community). In RUN mode, it fails miserably. In short, Flex2 is > ignoring these extra compiler options when not in DEBUG mode. We are > no longer able to see the [Collection] metadata. > > Does anyone have any idea for working around this? We are using ANT > for our builds, and I can guarantee that the -keep-as3-metadata > compiler option is being used identically in all cases. It simply > gets ignored in RUN mode, and Flex2 goes back to throwing out all > metadata it doesn't understand. >

