java - 如何在方法中返回 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);
}
}
}
}
它说“此方法必须返回文件类型的结果”
解决方案
当文件不存在时,您需要以某种方式处理这种情况 - 因此您需要抛出异常(可能不是最好的解决方案,但也是可能的)或返回一些特殊的“标记对象”,指示未找到该文件
我认为返回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(...)
推荐阅读
- c# - 节点“TreeView”是否具有唯一标识符 (id)?
- r - r dplyr 和 data.table:聚合然后加入原始表
- sql - SQL Insert Into 使某些列为空
- r - R中的核密度估计器具有加权和边界校正?
- javascript - jQuery UI 对话框上的按钮是否必须去抖动?
- sql-server - 如何在服务器上正确存储图像并在数据库中引用它们?
- math - 合并多个平均值而不计算总数
- java - 在 Linux 上使用 Swing «artifacts» 制作一个非常简单的 GUI 程序
- python - 日志不会覆盖
- google-cloud-platform - 使用 DataflowRunner 时 PubSubIO 如何确定读取速度