আমি জাভা 8 এপিআইয়ের ifPresent()
পদ্ধতিটি বোঝার চেষ্টা করছি Optional
।
আমার সাধারণ যুক্তি রয়েছে:
Optional<User> user=...
user.ifPresent(doSomethingWithUser(user.get()));
তবে এটি সংকলনের ত্রুটির ফলস্বরূপ:
ifPresent(java.util.functionError:(186, 74) java: 'void' type not allowed here)
অবশ্যই আমি এই জাতীয় কিছু করতে পারি:
if(user.isPresent())
{
doSomethingWithUser(user.get());
}
তবে এটি ঠিক একটি বিশৃঙ্খল null
চেকের মতো।
আমি যদি কোডটি এতে পরিবর্তন করি:
user.ifPresent(new Consumer<User>() {
@Override public void accept(User user) {
doSomethingWithUser(user.get());
}
});
কোডটি অবিচ্ছিন্ন হয়ে উঠছে, যা আমাকে পুরানো চেকটিতে ফিরে যাওয়ার কথা ভাবায় null
।
কোন ধারনা?