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

Java:我可以将对象列表转换为字符串[]列表,反之亦然吗?,java,list,object,casting,Java,List,Object,Casting,在不查看列表并强制转换对象的情况下,是否可以执行此操作 如果可能的话,我还需要将List转换为List(T=预定义对象) 编辑:为了澄清,我尝试使用List作为类方法的返回类型,该类方法在我的代码中广泛使用。否。这根本不是一个有效的转换,因为并非所有对象都是字符串[] 您可以在两行代码中自行确定这一点 编辑 听起来您需要更一般地编写方法。大概是这样的: public <T> List<T> getGenericList() { return new Array

在不查看列表并强制转换对象的情况下,是否可以执行此操作

如果可能的话,我还需要将
List
转换为
List
(T=预定义对象)


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

否。这根本不是一个有效的转换,因为并非所有
对象
都是
字符串[]


您可以在两行代码中自行确定这一点


编辑 听起来您需要更一般地编写方法。大概是这样的:

public <T> List<T> getGenericList()
{
    return new ArrayList<T>();
}
公共列表getGenericList()
{
返回新的ArrayList();
}
这可以返回一个
列表
,如下所示:

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

否。如果第一个列表中的
对象实际上不是
t
,该怎么办

也就是说,您可以尝试将
List
转换为
List
(为异常做好准备)

/e1

我不知道您的代码的具体内容,但听起来创建一个新代码对您是有益的。

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

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

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

    List listQ = listO;
    List<String> listS = (List<String>) listQ;
List listO=newarraylist();
列表。添加(“Foo”);
列表。添加(“酒吧”);
List listQ=listO;
List listS=(List)listQ;

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

我想我可以使用
instanceof
?@dee
foo instanceof T
其中
foo
是一个
对象,因为它是不可能的。是的,它给了我一个错误,这就是我问这个问题的原因。也许有一种方法我不知道。将它声明为
列表
。但它并不总是
列表
,有时它是
列表
,这取决于你对“转换”的定义:要做的破坏性较小的事情是转换为非类型列表。从中可以强制转换为类型化列表,但它不会强制转换其中的对象。很高兴知道您为什么会这样做(失去类型安全性通常不是一个好主意)。@Viruzzo,我知道这不是最好的方法,但我正在尝试使用已经可用的代码,有时我使用它来获取
列表
,有时它用于
列表
(T=预定义对象)