In article <i0vohh$1ep$>,
"Mike Schilling" <> wrote:
> "Lew" <> wrote in message
> news:f4a6bdb8-c41e-4978-9abf-...
> > Ross wrote:
> >> Let's say that I have a java.util.ArrayList which will contain only
> >> strings. So, I can declare this as:
> >>
> >> ArrayList<String> blah = new ArrayList<String>();
> >>
> >> So far so good, but let's say that blah is an array in itself. I'd
> >> expect to be able to do this:
> >>
> >> ArrayList<String> blah[] = new ArrayList<String>[ 50 ];
> >>
> >> However, if I do that, I get a compile time error saying something
> >> about creating a generic array. If I modify the code to:
> >>
> >> ArrayList<String> blah[] = new ArrayList[ 50 ];
> >>
> >> Then, it compiles and works, but gives me a warning about using a
> >> deprecated blah blah blah.
> >>
> >> What gives?
> >
> > Arrays and generics don't mix. It has to do with arrays being
> > reifiable but not generics.
> >
> > From the JLS, §10.10:
> > "... creation of arrays of non-reifiable types is forbidden."
> > <http://java.sun.com/docs/books/jls/third_edition/html/
> > arrays.html#10.10>
>
> There aren't many instances in Java of "That's how it works. Don't ask why;
> you're better off not knowing", but this is one of them.
I'd like to submit this one too:
-----------
public class Foo
{
class InnerFoo { }
void method ()
{
InnerFoo x[]= new InnerFoo[100]; //Compiles
}
}
-----------
public class Foo<BAR>
{
class InnerFoo { }
void method ()
{
InnerFoo x[]= new InnerFoo[100]; //Doesn't compile
}
}
-----------
public class Foo<BAR>
{
class InnerFoo { }
void method ()
{
InnerFoo x[]= new Foo.InnerFoo[100]; //Compiles
}
}
--
I won't see Google Groups replies because I must filter them as spam