有一种方法get(sql)(我不能修改它).这个方法返回MyObjects,它必须在try catch块中,因为JqlParseException那里是可能的.我的代码是:
String sql = something;
try{
MyObject object = get(sql);
} catch(JqlParseException e){
e.printStackTrace();
} catch(RuntimeException e){
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
我想删除try catch并使用Optional类,我试过:
MyObject object = Optional.ofNullable(get(sql)).orElseThrow(RuntimeException::new);
Run Code Online (Sandbox Code Playgroud)
但是那里的IDE力量也尝试了.并为:
MyObject object = Optional.ofNullable(get(sql)).orElseThrow(JqlParseException::new));
Run Code Online (Sandbox Code Playgroud)
是一个错误(在IDE中)The type JqlParseException does not define JqlParseException() that is applicable.有没有办法避免尝试catch块并使用可选的?
我有一个简单的类,有三个值:
class Book{
private String title;
private String author;
private double price;
}
Run Code Online (Sandbox Code Playgroud)
title是独一无二的(永远).有一个选定的标题列表(as List<String>)和每个Book系统的列表.我希望Book从标题列表中获取所有密钥.我的代码是:
List<Book> allBooks = getAllBooks();
List<String> selectedTitles = getSelectedTitles();
List<Book> selectedBooks = allBooks.stream().
filter(x -> selectedTitles.contains(x.getTitle())).
collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
它的工作原理,但是选择的allBook书籍是通过insted 来订购的selectedTitles.例如:
allBooks(only title) = {"A","B","C","D"}
selectedTitles = {"B","A","D"}
selectedBooks(only title) = {"A","B","D"}
Run Code Online (Sandbox Code Playgroud)
怎么可能(通过stream()订购selectedTitles?)(这个例子应该是{"B","D","A"}?