Win a copy of Design for the Mind this week in the Design forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

generic and arrays

 
Tian Zhang
Greenhorn
Posts: 26
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
hello!

could someone suggest what a solution for the following code would be?



at the moment i have to up cast everything to Object as the above is illegal:


this creates a problem as if i wanted to iterate through the array using the new syntax:



becomes illegal.

thanks,
tian
 
marc weber
Sheriff
Posts: 11343
Java Mac Safari
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
See if this helps.
 
Tian Zhang
Greenhorn
Posts: 26
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
hello,

thanks for the link, though unfortunatly i didnt find it that useful i'm sure it will be useful to others!

i've ended up with some ugly casting as googling: generic arrays by luck landed me on page that comfirmed what i had suspected in the first post.

thanks,
tian
 
Jim Yingst
Wanderer
Sheriff
Posts: 18671
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
One option is to not use arrays at all, and use List<MyType> instead. Another, if you really really need arrays of the appropriate type, is to have your instance keep a reference to the Class it's associated with (require it in the constructor or factory method). Then use java.lang.reflect.Array.newInstance(clss, size) to create the appropriate array.
 
Tony Morris
Ranch Hand
Posts: 1608
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Originally posted by Tian Zhang:
hello!

could someone suggest what a solution for the following code would be?



at the moment i have to up cast everything to Object as the above is illegal:


this creates a problem as if i wanted to iterate through the array using the new syntax:



becomes illegal.

thanks,
tian


You have found (one of many limitations) a limitation of generics. You'll find evidence of your best case scenario in places such as the source to java.util.ArrayList or net.tmorris.adt.set.MutableSet, which amounts to a compile-time warning (or alternatively, something other than an array without O(1) seek).

Welcome to Java
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic