首页 > 解决方案 > 获取对象列表的大小 - 不带 .ifPresent 的 Optional.get()

问题描述

我有返回OptionalBook 对象的方法(不要介意名称,因为它只是代码示例)。我想获取 Book 类中列表的大小:

public class Book {
    Integer b;

    DateTime dateOfCreation;

    Integer a;

    List<Integer> bookList;
}

所以它是这样的:

public class Main {
    public static void main(String[] args) {

        Optional<Book> book = getBookObject();
        int sizeOfList = book.get().bookList.size();
    }

    static Optional<Book> getBookObject() {
        return Optional.of(new Book());
    }
}

我在get()其中有警告,例如Optional.get() without .ifPresent获取此列表大小的正确方法是什么?

标签: javajava-8optional

解决方案


如果书籍不存在,则获取包含大小的可选项或空的可选项:

Optional<Integer> sizeOfListOptional = book.map((Book presentBook) -> presentBook.bookList.size());

推荐阅读