java Vector.toArray 与强制类型转换
今天写程序的时候碰到这样的问题:
public String[] getPlatformIDList()
{
Vector result = new Vector();
try
{
Statement stmt = conn.createStatement();
String sql = "SELECT PlatformID FROM Platform";
rs = stmt.executeQuery(sql);
while(rs.next())
{
result.add(rs.getString(1));
}
if (result.size() > 0)
{
String[] str = (String[]) result.toArray(); // 出现ClassCastException
return str;
}
else
return null;
}
catch(Exception e)
{
System.err.println(e);
return null;
}
finally
{
try
{
rs.close();
conn.close();
}
catch(Exception e2)
{}
}
}
发现不能将Vector类经过toArray()方法得到的Object[]直接转换成String[],找到用另一个带有参数的 toArray(T[] a)方法才可以。
将该语句改为:
String[] str = (String[]) result.toArray(new String[1]);
即告诉Vector,我要得到的数组的类型。
回想一下,应该是java中的强制类型转换只是针对单个对象的,想要偷懒,将整个数组转换成另外一种类型的数组是不行的。