我有一個方法findUrl()
是採取User
和Permission
作爲參數和查詢數據庫,並實現了一些邏輯來找到這個User
以逗號分隔訪問的網址串。如何創建使用Java 8可選Java方法的空安全版
我想開發這種方法的一個空安全的版本,以相同的 User
和Permission
作爲參數,然後返回一個Optional
這將是 空,如果傳遞給它的值中至少有一個爲空或findUrl
方法的返回null
。我寫了下面的代碼,但它看起來像一個空檢查基礎實施和我沒有看到使用可選,使代碼更簡潔的多少好處。
public Optional<String> nullSafeFindUrl(User user, Permissions permissions) {
if ((Optional.ofNullable(user)).isPresent() && (Optional.ofNullable(permissions)).isPresent()) {
return Optional.ofNullable(findUrl(user.get(), permissions.get()));
} else {
return Optional.empty();
}
}
有沒有更好的方法來使代碼更具可讀性?
「但更多的似乎是基於空檢查實行」究竟是什麼意思這件事? –
爲了記錄:使用選配的參數是不完全的最佳做法;見http://stackoverflow.com/questions/31922866/why-should-java-8s-optional-not-be-used-in-arguments ...是的,瘋了,你只應該**返回**可選對象;但不要將它們用作參數或字段。 – GhostCat
@ E_net4像這裏我用if(user.isPresent()&& permissions.isPresent())來檢查值是否存在於可選方式中,就像我會做空檢查它們是否爲可選類型 –