gpt4 book ai didi

Java MyFile 扩展文件

转载 作者:行者123 更新时间:2023-11-29 06:41:23 26 4
gpt4 key购买 nike

我是 java 的新手,正在尝试扩展 File 类以使用以下类向其添加更多方法和属性

import java.io.File;

public class RecordingFile extends File {
private static final long serialVersionUID = -4774703382591639948L;
String RecordingNameFormatted;
String RecordingDurationFormatted;
String RecordingSizeFormatted;
String RecordingDateFormatted;
String RecordingBitrateFormatted;

public RecordingFile(String path) {
super(path);
File f = new File(path);
RecordingNameFormatted = f.getName().replace(".mp3", "");
RecordingDurationFormatted = Utils.millisecondsToHours(Utils.getMp3DurationPureJava(f));
RecordingSizeFormatted = Utils.humanReadableByteCount(f.length(), true);
RecordingDateFormatted = Utils.longToDate(f.lastModified());
RecordingBitrateFormatted = Utils.getBitratePureJava(f) +"Kbps";
}
}

以上不能正常工作。我什至不确定

    File f = new File(path);

应该在那里。例如,当我尝试这个时

ArrayList<RecordingFile> ret = new ArrayList<RecordingFile>();
RecordingFile filesDir = new RecordingFile(path);
if (!filesDir.exists()) {
filesDir.mkdirs();
}
RecordingFile[] list = filesDir.listFiles();

Eclipse 告诉我“类型不匹配:无法从 File[] 转换为 RecordingFile[]”我如何才能通过向其添加更多属性/方法来扩展 File 类?

最佳答案

内置的东西都不知道你的类,所以他们不可能返回你的新类型。我认为您正在寻找的可能是 扩展方法,它在 Java 中尚不存在。

Java equivalent to C# extension methods

为了使用您的东西,您必须创建一个方法,在给定任何 File 对象集合的情况下返回您的新类型。然后你必须在任何你想使用你的类型的地方调用它。

所以这条线看起来像

RecordingFile[] list = convertToRecordingFiles(filesDir.listfiles());

我将 convertToRecordingFiles 的实现留作练习 :)

关于Java MyFile 扩展文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11513327/

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