如何正确返回方法的可选<>?
我已经阅读了很多Java 8 Optional,我确实理解了这个概念,但是在尝试在我的代码中自己实现它时仍然会遇到困难。
虽然我已经在网上搜索了好的例子,但我没有找到一个很好的解释。
我有下一个方法:
public static String getFileMd5(String filePath) throws NoSuchAlgorithmException, IOException {
AutomationLogger.getLog().info("Trying getting MD5 hash from file: " + filePath);
MessageDigest md = MessageDigest.getInstance("MD5");
InputStream inputStream;
try {
inputStream = Files.newInputStream(Paths.get(filePath));
} catch (NoSuchFileException e) {
AutomationLogger.getLog().error("No such file path: " + filePath, e);
return null;
}
DigestInputStream dis = new DigestInputStream(inputStream, md);
byte[] buffer = new byte[8 * 1024];
while (dis.read(buffer) != -1);
dis.close();
inputStream.close();
byte[] output = md.digest();
BigInteger bi = new BigInteger(1, output);
String hashText = bi.toString(16);
return hashText;
}
此简单方法通过向文件路径传递文件来返回文件的 md5。您可以注意到,如果文件路径不存在(或键入错误),则会引发NoSuchFileException,并且该方法返回Null。
我不想返回 null,而是要使用 Optional,所以我的方法应该返回 ,对吗?Optional <String>
- 正确的做法是什么?
- 如果返回的 String 为 null - 我可以在这里使用吗,或者客户端应该使用这种方法?
orElse()