• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

casting doubt

 
sambasivarao laghuvarapu
Greenhorn
Posts: 9
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Arraylist l=new Arraylist();
l.add("samba");
l.add("siva");
String[] s=(String[])l.toArray(); //line 1


in line 1 i am getting classCastException.can anyone explain how to convert that objcet Array to string Array
 
Jesper de Jong
Java Cowboy
Saloon Keeper
Pie
Posts: 15150
31
Android IntelliJ IDE Java Scala Spring
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Lookup the API documentation of class ArrayList. You'll see that there are two toArray() methods: one that takes no arguments and returns an Object[], and one that does take an argument T[] and returns T[]. You need to use the second toArray() method:

String[] s = (String[]) l.toArray(new String[l.length]);
 
Kishore Ryali
Greenhorn
Posts: 2
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
String[] s = (String[]) l.toArray(new String[l.length]);

l.length should be repalced with l.size()

Below code works:

String[] s = (String[]) l.toArray(new String[l.size()]);

I have a doubt regarding the API for toArray in ArrayList class
API says:
public <T> T[] toArray(T[] a)

So if we are using l.toArray(new String[l.size()]), it should return String array. But if i use the below code without type cast

String[] s = l.toArray(new String[l.size()]);

I get below compile error

ArrayListTest.java:10: incompatible types
found : java.lang.Object[]
required: java.lang.String[]
String[] s = l.toArray(new String[l.size()]); //line 1

Please explain.
 
It is sorta covered in the JavaRanch Style Guide.
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic