实际上,由于类型擦除,这是可能的.您可以将参数化类型转换为原始类型,反之亦然.
List<Object> listO = new ArrayList<Object>( );
listO.add( "Foo" );
listO.add( "Bar" );
List listQ = listO;
List<String> listS = (List<String>) listQ;
Run Code Online (Sandbox Code Playgroud)
然而,这并不能意味着这是一个好主意.这适用于参数化类型的编译时类型检查.如果列表包含您期望的类型以外的对象,则可能会出现意外结果.
不.这根本不是有效的转换,因为并非所有Object
的都是String[]
.
您可以通过2行代码自行确定.
听起来你需要更通用地编写方法.像这样的东西:
public <T> List<T> getGenericList()
{
return new ArrayList<T>();
}
Run Code Online (Sandbox Code Playgroud)
这可以返回List<String[]>
如下:
List<String[]> listOfStringArr = getGenericList();
Run Code Online (Sandbox Code Playgroud)