Basically, let's say you want to execute a method on a function somewhere far far away without knowing what object you are talking to, you use a Method Handle in Java or a NSInvocation to encapsulate the method. My use case scenario was in the iPhone app I created during the summer. I used NSInvocation to execute actions. I don't remember the exact case, but I think the pinview had success and fail actions and I needed a way to do it (I was thinking of using functions pointers). Long story short, I found NSInvocation while reading StackOverflow and curiously reading the iOS Documentation, which is well written (I'm not sure which came first). Whenever the idea of success/fail action comes up I use a pattern I deem the Action Pattern which basically uses NSInvocation, but now I can use Method Handles, so it will always be an option.