考慮下面的代碼:的try-catch,可選/空,拉姆達
- obj是不會被修改之後被intialised的服務,但是,由於try/catch塊,它不被視爲有效決賽。 有沒有辦法避免這種情況?
是否可選可能被認爲是避免空檢查的通用方法?在這個例子中,服務會拋出異常,或者返回null,或者總是返回Optional?
//to be used outside try/catch block, object must be initialized as null SomeObject obj = null; try { obj = someService.getSomeObject(); } catch (ServiceException e) { LOG.error("Something nasty happened", e); } //the service could have returned a null object if(obj == null) { LOG.error("Obj is null"); } //to be used in a lambda, object must be final SomeObject objCopy = obj; boolean test = someList.stream() .anyMatch(o->o.equals(objCopy));
'它不被認爲是有效的最終'你是什麼意思? – 2016-11-23 14:45:03
@LutzHorn,一個變量被認爲是有效的最終的,如果它的值初始化後永遠不會改變。 –