Win a copy of Re-engineering Legacy Software this week in the Refactoring forum
or Docker in Action in the Agile forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Casting of Object[] to Animal[] fails

 
Alexander Curvers
Ranch Hand
Posts: 33
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi

Casting of Object[] to Animal[] fails while the Object[] array contains only Animal objects
when i use a for loop to add each Animal out of the Object[] array to the Animal[] array it works.. but like stated just trying to cast it in one line of code (Animal[]) fails
why is that?
 
Kevin Workman
Ranch Hand
Posts: 151
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Can you post the code you're attempting? It seems to work fine for me.
 
Matthew Brown
Bartender
Posts: 4565
8
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
How are you creating the Object[]? Because only putting Animals into an Object[] is not enough to make it an Animal[]. You need to have actually created an Animal[] in the first place.
 
Alexander Curvers
Ranch Hand
Posts: 33
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
thank you both for your replies

Matthew Brown wrote:How are you creating the Object[]? Because only putting Animals into an Object[] is not enough to make it an Animal[]. You need to have actually created an Animal[] in the first place.


with [List].toArray() it makes a Object[] so its clear that is the problem maybe there is a better way to convert the list to an array? so it can be cast or doesnt need to be casted

 
Matthew Brown
Bartender
Posts: 4565
8
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Ah, thought it might be that! There's a trick. You need the version of toArray that takes an argument.
<T> T[] toArray(T[] a)
Returns an array containing all of the elements in this list in proper sequence (from first to last element); the runtime type of the returned array is that of the specified array.

So if you try:
it'll return an Animal[].
 
Alexander Curvers
Ranch Hand
Posts: 33
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Ah thanks Matthew! thats what i needed
 
Rob Spoor
Sheriff
Pie
Posts: 20495
54
Chrome Eclipse IDE Java Windows
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Slightly better, because it creates only one array (with elements) instead of two (one empty one, one with elements):
 
Consider Paul's rocket mass heater.
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic