如果找不到要返回的对象,我应该从方法返回什么?

时间:2013-09-23 13:31:21

标签: java

这是我的方法:

public Book getBook(String title, String author){
    for (int i = 0; i < listOfBooks.size(); i++){
        Book book = listOfBooks.get(i);
        if (book.getTitle() == title && book.getAuthor() == author){
            return book;
        }
    }
}

如果在listOfBooks中找不到该书,我应该返回什么?

7 个答案:

答案 0 :(得分:5)

返回null(并记录行为)是一个相当明显的选择。

P.S。使用equals()比较字符串:

if (book.getTitle().equals(title) && book.getAuthor().equals(author)) {

P.P.S。编写循环的以下方式可以说是更惯用的,在某些情况下可能会更快:

for (Book book : listOfBooks) {

答案 1 :(得分:4)

返回null或抛出您编写的继承自Java.lang.Exception的BookNotFoundException异常

答案 2 :(得分:2)

如果找不到Book,你可以简单地return null;或抛出像'NotFoundException`这样的自定义Exception

顺便说一句,你不能使用==来比较Java中的String。使用:

if (book.getTitle().equals(title) && book.getAuthor().equals(author))

而不是:

if (book.getTitle() == title && book.getAuthor() == author)

答案 3 :(得分:0)

如果找不到任何内容,并且在比较null使用String方法equals()book.getTitle().equals(title)时,您应该返回book.getAuthor().equals(author)您可以阅读comparing string with equals and assignment operator

答案 4 :(得分:0)

我要么返回null并在你的类的文档中写下这个行为,要么抛出异常BookNotFoundException

答案 5 :(得分:0)

您可以返回null表示您找不到数据。

答案 6 :(得分:0)

如果在列表中找不到书籍对象,则可以返回null。并使用.equals()方法来比较字符串。

  public Book getBook(String title, String author){
            Book book =null;
            for (int i = 0; i < listOfBooks.size(); i++){
                book = listOfBooks.get(i);
               if (book.getTitle().equals(title) && book.getAuthor().equals(author){
                  return book;
               }
           }
           return book;
   }