"Provides" and "with" type relationships
Paul Benedict
pbenedict at apache.org
Tue Mar 15 19:39:42 UTC 2016
Thanks for your response Alex. If I am understanding you correctly,
"provides" is "not constrained to be an interface" because it can be "a
single interface or abstract class". So shouldn't my concrete class for
"provides" be rejected by the compiler? And is it okay that both types were
identical?
Cheers,
Paul
On Tue, Mar 15, 2016 at 2:26 PM, Alex Buckley <alex.buckley at oracle.com>
wrote:
> The first operand to 'provides' (the "service interface") is not
> constrained to be an interface by "Modules in the Java Language and JVM".
> This is because the spec of j.u.ServiceLoader ("a service is represented by
> a single type, that is, a single interface or abstract class").
>
> The second operand to 'provides' (the "service implementation") is
> constrained not to be an interface or an abstract class by "Modules in the
> Java Language and JVM". This is also because of the spec of
> j.u.ServiceLoader ("provider classes must have a zero-argument constructor
> so that they can be instantiated during loading").
>
> Bear in mind that the JCK team can easily set up abstract test cases like
> this. What they can't do is check whether YOUR application runs on
> JDK-9-with-Jigsaw, or whether arbitrary JARs on YOUR classpath work as
> automatic modules.
>
> Alex
>
>
> On 3/15/2016 12:07 PM, Paul Benedict wrote:
>
>> module z {
>> exports z;
>> provides z.Main with z.Main;
>> }
>>
>> The SOTM says "Service-provider declarations can be further interpreted to
>> ensure that providers (e.g., com.mysql.jdbc.Driver) actually do implement
>> their declared service interfaces" (section 4, para. 8).
>>
>> I see javac checking that they are related types, but javac is not
>> checking
>> that "provides" is an interface type. That is what I was expecting based
>> on
>> the reading material.
>>
>> The other unexpected outcome was that provides/with allows the identical
>> type. I don't know if that's intended, but please advise.
>>
>> PS: I did go through the open tickets this time (thanks Alan) and do not
>> see any similar reports. If I missed it, I apologize; just trying not to
>> waste your time by reporting a duplicate.
>>
>> Cheers,
>> Paul
>>
>>
More information about the jigsaw-dev
mailing list