2013-01-09 60 views
1

可能重复:
How to convert object array to string array in Java铸造对象数组在Java中

我收到了一个对象,并将其铸造成一个String数组,像这样:

Object values[] = (Object[])request.getSession().getAttribute("userList"); 
String[] tmp = new String[values.length]; 
for(int i = 0; i < tmp.length; ++i) { 
    tmp[i] = (String) values[i]; 
    out.println(tmp[i]); 
} 

是有没有更好更干净的方法来做到这一点?

+2

当你调用setAttribute(),如果你是一个合格的String [],你可以直接转换为而不是使用一个对象数组作为代理 –

+0

@TritonMan - 这应该是一个答案。 –

回答

5

为什么不直接投射?

String values[] = (String[])request.getSession().getAttribute("userList"); 
+2

为什么不呢?因为'java.lang.ClassCastException'也许?尝试'String [] arr =(String [])(new Object [] {“a”,“b”,“c”});' –

+0

@RichardJPLeGuen if _getAttribute()_ returns _Object [] _ why do you仍然将其转换为_Object [] _? – Juvanis

+1

因为[HttpSession.getAttribute(...)'的返回类型是'Object'](http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpSession.html#getAttribute (java.lang.String))不是'Object []'。 –