这可以不通过列表并转换对象吗?
如果有可能,我还需要将List<Object>
转换为List<T>
(T =预定义对象)?
编辑:为了澄清,我正在尝试使用List<Object>
作为我的代码中广泛使用的类方法的返回类型。
答案 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
?