Как правильно вернуть Optional <> метода?
Я много читал о 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 получить брошенный и метод возвратаНоль.
Вместо того, чтобы возвращать ноль, я хочу использовать Optional, поэтому мой метод должен вернутьOptional <String>
, право?
orElse()
Или этот метод должен использоваться на стороне клиента?