Alan.Bateman at oracle.com
Thu Sep 15 15:51:35 UTC 2016
On 15/09/2016 07:54, Peter Levart wrote:
> One thing that is not clear is whether the yyy in "provides xxx with
> yyy" directive of module declaration must be a concrete class and a
> subtype of service type when the service is obtained via a static
> method. For example, is the following a valid configuration: Service
> type A, implementation class B (a subtype of A), static method
> declared in C (unrelated to A) with return type B (or A or anything
> between A and B?).
If yyy defines the static factory method then it does not need to be a
sub-type of xxx, the return type from the public provider() method just
needs to be xxx or a sub-type of. So the example is okay, no need for C
to extend/implement A.
I should note that the implementation isn't aligned with this yet but
there are updates to both javac and SL coming that will align it with
the current proposal.
More information about the jigsaw-dev