Como indiretamente executar uma referência de método no Java 8?
As questões gerais são:
Ao usar a sintaxeobject::aMethod
, pode ser convertido em um tipo comoMethodHandle
como uma interface funcional?Se não, como uma referência de método pode ser invocada indiretamente no Java 8, se possível?Por exemplo, imagine que gostaríamos de ter umMethodRefRunner
Como:
class MethodRefRunner {
static void execute(Object target, WHATTYPE mref, Object... args) {
mref.apply(args);
}
}
E pode ser usado como:MethodRefRunner.execute(o, o::someMethod, someParam)
No snippet acima, uma opção paraWHATTYPE
éjava.util.function.Function
mas muito restritivo. Comoesta resposta menciona, antes da versão b75, havia umjava.util.function.Block
estava disponível e pode ser útil.
Por outro lado, qualquer chance queWHATTYPE
poderia ser de alguma forma convertido para umjava.lang.invoke.MethodHandle
?
Nota para especialistas em Java: Por favor, refine o título das perguntas conforme necessário.