Java toArray()与toArray(新对象[0])
我有一个名为Java toArray()与toArray(新对象[0]),java,type-conversion,toarray,Java,Type Conversion,Toarray,我有一个名为listtable的ArrayList。由于某种原因,子句[]whatever=listtable.toArray()给出了一个不兼容的类型错误,但是子句[]whatever=listtable.toArray(新子句[0])工作正常。为什么会这样?这两个电话有什么区别?javadoc说它们“功能相同” 这是我的完整代码(相关声明就在结尾之前): public static子句[]readCNF(字符串名,布尔打印)引发IOException { BufferedReader文件=新
listtable
的ArrayList
。由于某种原因,子句[]whatever=listtable.toArray()
给出了一个不兼容的类型错误,但是子句[]whatever=listtable.toArray(新子句[0])
工作正常。为什么会这样?这两个电话有什么区别?javadoc说它们“功能相同”
这是我的完整代码(相关声明就在结尾之前):
public static子句[]readCNF(字符串名,布尔打印)引发IOException
{
BufferedReader文件=新的BufferedReader(新文件读取器(“./”+名称));
ArrayList listtable=新的ArrayList();
字符串行=null;
而((line=file.readLine())!=null){
如果(行字符(0)='p')
{
扫描仪=新扫描仪(行);
scanner.next();scanner.next();子句.NumVars=scanner.nextInt();子句.NumClauses=scanner.nextInt();
}else如果(line.charAt(0)!='c'){
ArrayList lits=新的ArrayList();
扫描仪=新扫描仪(行);
while(scanner.hasNext())
{
int var=scanner.nextInt();
如果(var!=0){lits.add(var);}
}
添加(新条款(lits));
}
}
如果(打印){
for(第条:列表表)
{
子句.print();
}
}
return(listtable.toArray(新子句[0]);//由于返回类型为子句[],因此与问题中的语句相同
}
toArray()
返回对象的数组。必须将数组的每个元素强制转换为所需的类型
toArray(T[])
接受泛型类型并返回特定类型的数组。无需强制转换返回值和/或数组元素
如上所述,toArray()
方法是预泛型方法
List<String> list = new ArrayList<String>();
list.add("Alice");
list.add("Bob");
String[] strArray = list.toArray(new String[0]);
for (String str : strArray) {
System.out.println(str);
}
Object[] objArray = list.toArray();
for (Object obj : objArray) {
String str = (String) obj;
System.out.println(str);
}
List List=new ArrayList();
列表。添加(“Alice”);
列表。添加(“Bob”);
String[]strArray=list.toArray(新字符串[0]);
用于(字符串str:strArray){
系统输出打印项次(str);
}
Object[]objArray=list.toArray();
用于(对象obj:objArray){
字符串str=(字符串)obj;
系统输出打印项次(str);
}
继续阅读javadoc:返回数组的运行时类型是指定数组的运行时类型。但是,如果toArray()方法不起作用,为什么他们会有它呢?你说它不起作用是什么意思?你投了石膏吗?那是安全的演员阵容吗?javadoc指定的返回类型是什么?它工作得很好,正如预期的那样。我的意思是,如果括号中没有新对象[0],它就无法编译。我相信它是在泛型之前出现的。
List<String> list = new ArrayList<String>();
list.add("Alice");
list.add("Bob");
String[] strArray = list.toArray(new String[0]);
for (String str : strArray) {
System.out.println(str);
}
Object[] objArray = list.toArray();
for (Object obj : objArray) {
String str = (String) obj;
System.out.println(str);
}