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中的强制类型转换只是针对单个对象的,想要偷懒,将整个数组转换成另外一种类型的数组是不行的。

posted @ 2013-03-29 15:50  JustinYo  阅读(573)  评论(0编辑  收藏  举报