فقط اگر ممکنه TRY...CATCH...FINALLY که گفتید میشه مختصر نوشت با Predicate رو یه توضیح بدید
اگر منظورتون اینه که بتونیم Predicate رو جایگزین Try...Catch کنیم که باید بگم که کلا این اینترفیس کارش اینه که جلوی Null Pointer رو بگیره با متد هایی که داره حالا اگر از try catch برای Null Pointer Exception استفاده میکنید آره پیشنهاد منم اینه که از این اینترفیس استفاده کنید چون همونطور که می دونید بلوک try catch خطاهای منطقی رو تو زمان اجرا wrap میکنه که این برای دیباگ کردن برنامه کار و سخت میکنه.
Predicate<String> nonNull = Objects::nonNull;
Predicate<String> isEmpty = String::isEmpty;
private Object myTest(String myObject) {
if(nonNull.negate().and(isEmpty).test(myObject))
return "is null";
return myObject + "test";
/*-----------------------------------*/
try {
if(!myObject.isEmpty())
myObject = myObject + "test";
return myObject;
} catch (NullPointerException e) {
return "is null";
}
}