I think this will surely be possible for RecordComponents with code
reflection (project Babylon), using the syntax you propose.
You can create a quotable function like this:
import jdk.incubator.code.*;
@Reflect
@FunctionalInterface
interface Accessor {
Object get(Record r);
}
Then create something like (just a sketch, sorry, I have no time now to
provide a full-fledged sample):
static RecordComponent foo(Accessor acc) {
Quoted q = Op.ofQuotable(acc).orElseThrow();
// extract a method handle from q using Babylon API
// unreflect it and find the corresponding RecordComponent
}
With best regards,
Tagir Valeev
On Sat, Nov 29, 2025 at 8:45 PM David Alayachew <[email protected]>
wrote:
> Hello @amber-dev <[email protected]>,
>
> I asked this on core-libs-dev already, but I figured I should ask here too.
>
> Let's say I have some record User(String firstName, String lastName) {}.
>
> Is there any possible way for me to do the following?
>
> java.lang.reflect.RecordComponent firstName = foo(User::firstName);
>
> I'll even accept this.
>
> java.lang.reflect.Method lastName = foo(User::lastName);
>
> Thank you for your time and consideration.
> David Alayachew
>