On 22/06/2016 21:31, Alex Buckley wrote:

Hi Gunnar,

Thanks. Yes, I suspected you were using ServiceLoader::load to get a dummy instance of each custom constraint validator class (in general, there might be multiple modules providing a validator for @Min-on-int), and then obtaining each dummy's Class object and doing your own instantiations of validator classes thereafter.

It wouldn't help if ServiceLoader simply returned the Class objects for service implementations, because you still wouldn't be able to newInstance() them without the export. You would need ServiceLoader to take one of those Class objects back (call it cImpl), along with the Class object for a service interface (call it cIntf), and then instantiate cImpl on your behalf if a) cIntf.isAssignableFrom(cImpl) and b) <<some caller-sensitive conditions>>. No more export needed.
There has been a number of experiments and proposals along these lines over the years. I think the most recent was a way to filter and order based on the provider type. It needs more thought to see if this is the right thing to do or not.

-Alan.

Reply via email to