Java:我可以将对象列表转换为String []列表,反之亦然?

时间:2011-11-22 16:11:53

标签: java list object casting

这可以不通过列表并转换对象吗?

如果有可能,我还需要将List<Object>转换为List<T>(T =预定义对象)?

编辑:为了澄清,我正在尝试使用List<Object>作为我的代码中广泛使用的类方法的返回类型。

4 个答案:

答案 0 :(得分:9)

实际上,由于类型擦除,这是可能的。您可以将参数化类型转换为原始类型,反之亦然。

    List<Object> listO = new ArrayList<Object>( );
    listO.add( "Foo" );
    listO.add( "Bar" );

    List listQ = listO;
    List<String> listS = (List<String>) listQ;

然而,这意味着这是一个好主意。这适用于参数化类型的编译时类型检查。如果列表包含您期望的类型以外的对象,则可能会出现意外结果。

答案 1 :(得分:6)

没有。这不是有效的转化,因为并非所有Object都是String[]


您可以通过2行代码自行确定。


修改

听起来你需要更通用地编写方法。像这样:

public <T> List<T> getGenericList()
{
    return new ArrayList<T>();
}

这可以返回List<String[]>,如此:

List<String[]> listOfStringArr = getGenericList();

答案 2 :(得分:0)

没有。如果第一个列表中的Object实际上不是 T怎么办?

话虽如此,您可以尝试将List<Object>转换为List<T>(为例外做好准备)。

/ E1
我不知道你的代码的具体细节,但听起来创建一个generic method会对你有所帮助。

答案 3 :(得分:0)

根据定义,这是不可能的。 java中的所有类都扩展了Object。物理列表理论上可以包含您想要的每种类型的元素。您想如何将某些内容转换为特定类型T