首页 > 解决方案 > 如何在方法中返回 arrayList 元素?

问题描述

我有一个包含文件列表的 Repertory 类,在这个 Repertory 类中我想编写一个返回具有特定名称的文件的方法。我试过了,但没有用。您的帮助将不胜感激 ps:代码不完整。我只是给你一个想法。

class File{ name, ........}

class Repertory {
    fichiers = new ArrayList<File>();

    public File get_File(String fileName){
        File f;
        for (int i = 0; i < this.files.size(); i++) {
            if(this.files.get(i).name.equals(fileName)) {
                f = this.files.get(i);
                return (f);
            }
        }
    }
}

它说“此方法必须返回文件类型的结果”

标签: javaoop

解决方案


当文件不存在时,您需要以某种方式处理这种情况 - 因此您需要抛出异常(可能不是最好的解决方案,但也是可能的)或返回一些特殊的“标记对象”,指示未找到该文件

我认为返回null是一个坏主意,并且是糟糕设计的一个指标——想想你将来需要记住的所有 NPE 情况

更好的是返回Optional(如果你的 JDK 比 8 旧,你可以使用 Guava)

public Optional<File> get_File(String fileName){
    for (int i = 0; i < this.files.size(); i++) {
        if(this.files.get(i).name.equals(fileName)) {
            return Optional.of(this.files.get(i));
        }
    }
    return Optional.empty();
}

然后在调用时处理这个

get_File("filename").orElse(...) // or even .orElseThrow(...)

推荐阅读