gpt4 book ai didi

java - 使用带有文件类扩展名的 File.listFiles()

转载 作者:行者123 更新时间:2023-12-01 20:20:57 27 4
gpt4 key购买 nike

我的问题是,简而言之,如何将 File.listFiles() 返回的 File 对象转换为 File 的扩展类?我将返回的对象放入 ArrayList 中。我的第一个想法是将文件对象转换为我的类,Figure.class。

for(final File file : dir.listFiles()) {
fileArrayList.add((Figure) file)
}

这会抛出 java.lang.ClassCastException。然后我想到只在Figure类中封装一个文件。为此,我为每个文件创建了一个新的Figure 对象。这引发了很多与内存相关的错误。

如何使用 File.listFiles() 来使我能够使用自己的 File 类扩展?

最佳答案

您需要创建对象,无法将现有对象转换为另一种类型的对象。因此,如果您的类名为 Figure,您将需要:

fileArrayList.add(new Figure(file.getAbsolutePath());

或类似的(如 File 没有复制构造函数,但有 constructor accepting a pathname )。

或者为 9000提醒我,您可以让 Figure 接受 File,然后在调用 super 时使用 getAbsolutePath (或类似的):

public Figure(File file) {
super(file.getAbsolutePath());
}

这取决于您希望 Figure 有哪些构造函数。

My first thought was to cast the file objects to my class, Figure.class.

请记住,转换只会更改对象的引用类型,而不会更改对象是什么。如果对象不是 Figure,则转换将会失败(如您所见)。 转换转换之间的区别是需要理解的一个重要区别。

关于java - 使用带有文件类扩展名的 File.listFiles(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44725179/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com