Java 如何在方法中返回arrayList元素?
我有一个Repertory类,它包含一个文件列表,在这个Repertory类中,我想编写一个方法,返回一个具有特定名称的文件。我试过了,但没用。谢谢你的帮助 附:代码不完整。我只是给了你一个想法Java 如何在方法中返回arrayList元素?,java,oop,Java,Oop,我有一个Repertory类,它包含一个文件列表,在这个Repertory类中,我想编写一个方法,返回一个具有特定名称的文件。我试过了,但没用。谢谢你的帮助 附:代码不完整。我只是给了你一个想法 class File{ name, ........} class Repertory { fichiers = new ArrayList<File>(); public File get_File(String fileName){ File f;
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);
}
}
}
}
类文件{name,…}
课堂剧目{
fichiers=newarraylist();
公共文件获取文件(字符串文件名){
文件f;
对于(int i=0;i
它说“此方法必须返回File类型的结果”请尝试以下操作:
public File get_File(String fileName){
File f = null;
for (int i = 0; i < files.size(); i++) {
if(files.get(i).name.equals(fileName)) {
f = files.get(i);
break;
}
}
return f;
}
公共文件获取文件(字符串文件名){
文件f=null;
对于(int i=0;i
您之所以会出现此错误,是因为您有一个返回路径,如果找不到文件,该路径将不会返回任何内容。现在,当找到一个文件时,将文件名指定给f后,循环将退出。如果您不想返回null来表示没有文件,还可以引发异常
除了异常,最好在方法中有一个单一的出口点。到处都有大量的返回使得代码更难理解和维护。您需要以某种方式处理文件不存在的情况-因此您需要抛出异常(可能不是最好的解决方案,但也是可能的),或者返回一些特殊的“标记对象”,指示找不到文件 我认为返回null是一个坏主意,也是一个坏设计的标志——只要想想你将来需要记住的所有NPE情况就可以了 更好的方法是返回可选的(如果您的JDK大于8,那么可以使用Guava)
或者在循环之后添加
returnnull
。最好保持作用域中没有变量,当您不需要它们时,通常会减少心理开销。在你的头脑中,必须处理许多变量,并回溯它们被设置的位置以及它们最终将被分配的值,这是很难理解和调试的(特别是当你的方法只包含一个提前退出的循环时)。确保正确地缩进代码。它使读取、理解和发现错误(如循环后缺少返回)变得更容易。如果您仅从循环中返回,则需要在循环完成后返回一些内容,以涵盖找不到文件的情况。
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(...)