ArrayStoreException没有理由?

时间:2014-03-07 19:08:43

标签: java file exception

我正在尝试创建类来执行以下操作: 获取一个文件夹,获取它包含的文件夹,以及主文件夹中的每个文件夹 - 获取其中的文件并将它们分成两组 - 一组是mp4,mkv,vlc和avi类型,另一组是srt类型

我目前的代码是:

Show.class:http://pastebin.com/vZ7ipFJc

Season.class:http://pastebin.com/tqUJ7S9v

Main.class:http://pastebin.com/LaEvuARW

stacktrace引领我到许多不同的地方:

Exception in thread "main" java.lang.ArrayStoreException
at java.lang.System.arraycopy(Native Method)
at java.util.ArrayList.toArray(Unknown Source)
at Show.<init>(Show.java:47)
at Main.getShows(Main.java:24)
at Main.setupShowsBox(Main.java:70)
at Main.<init>(Main.java:96)
at Main.main(Main.java:54)

(pastebin中的行与代码中的相同)问题似乎是我将arraylist转换为数组,我不知道的问题。有什么问题,我该如何解决?

2 个答案:

答案 0 :(得分:1)

所以这是造成错误的一行:

List<Season> seasons;
File[] seasonFile;

this.seasonsFile=seasons.toArray(new File[seasons.size()]);

您正在尝试将Season的列表转换为File的数组。您可以将File的列表转换为File的数组,也可以使用{{1将Season的列表转换为Season的数组}}

如果您可以将toArray()个对象转换为Season个对象,则可以将其放在File对象的toFile()方法中。然后获取文件数组:

Season

答案 1 :(得分:0)

你在Show.java中有第47行:

this.seasonsFile=seasons.toArray(new File[seasons.size()])

seasonsArrayList SeasonArrayList#toArray无法将Season的负载压缩到File的数组中。也许你想要this.seasonsFile = seasons.getShows;

此外,您不应该遵循方法名称约定的包私有变量名称。这会让所有人感到困惑。