@Parameters
public static Collection data() throws IOException {
ArrayList<String> lines = new ArrayList();
URL url = PokerhandTestCase.class.getClassLoader().getResource("test/TestFile.txt");
File testFile = new File(url.getFile());
FileReader fileReader = new FileReader(testFile);
bufReader = new BufferedReader(fileReader);
assertFalse("Failed to load the test file.", testFile == null);
boolean isEOF = false;
while (!isEOF){
String aline = bufReader.readLine();
if (aline == null){
System.out.println("Done processing.");
isEOF = true;
}
lines.add(aline);
}
return Arrays.asList(lines);
}
程序的最后一行导致崩溃,我想知道从arrayList定义集合的正确方法是什么。 Collection作为返回类型需要此函数。
答案 0 :(得分:3)
用这个替换最后一行:
return (Collection)lines;
由于ArrayList实现了Collection接口:http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html
总体代码:
public static Collection data() throws IOException
{
ArrayList<String> lines = new ArrayList();
// populate lines collection...
return (Collection)lines;
}
根据以下评论,或许这可以称为“数组集合”:
public static Collection data() throws IOException
{
ArrayList<String> array1 = new ArrayList();
ArrayList<String> array2 = new ArrayList();
ArrayList<String> array3 = new ArrayList();
// populate lines collection...
ArrayList<ArrayList<String>> lines = new ArrayList();
lines.add(array1);
lines.add(array2);
lines.add(array3);
return (Collection)lines;
}
答案 1 :(得分:0)
ArrayList lines = new ArrayList(); ... return Arrays.asList(lines);
这返回二维数组。
此功能是Collection作为返回类型所必需的。
我认为user1697575的答案是正确的。
答案 2 :(得分:0)
您要归还的收藏品必须是Collection<Object[]>
。您正在返回一个集合。你需要做这样的事情(完整的例子):
@RunWith(Parameterized.class)
public class MyTest {
@Parameters
public static Collection<Object[]> data() throws IOException {
List<Object[]> lines = new ArrayList<>();
File testFile = new File("/temp/TestFile.txt");
FileReader fileReader = new FileReader(testFile);
BufferedReader bufReader = new BufferedReader(fileReader);
Assert.assertFalse("Failed to load the test file.", testFile == null);
boolean isEOF = false;
while (!isEOF) {
String aline = bufReader.readLine();
if (aline == null) {
System.out.println("Done processing.");
isEOF = true;
}
lines.add(new Object[] { aline });
}
return lines;
}
private final String file;
public MyTest(String file) {
this.file = file;
}
@Test
public void test() {
System.out.println("file=" + file);
}
}
请注意,您没有在此处关闭文件,并且您在列表的末尾添加了一个无用的空值,但我复制了您的代码: - )。