The thing I was initially thinking to do, was basically make a configuration that has my implementation, and then at runtime of the task, resolve the configuration and then make a classloader using this, and then load the class I want from this, etc.
And well, I'm OK with calling code that ultimately does that, but I'd prefer not to write it myself.