I have a question about review question #7 on page 486 of the Study Guide for exam 1Z0-815.
The review question asks:
Suppose module puppy depends on module dog and module dog depends on module animal. Which two lines allow module puppy to access the animal.behavior package in module anima? (Choose two)
The correct answer according to page 526 are D (requires on line T) and G (requires transitive on line S).
As I see it, the package animal.behavior can never be accessed from within module puppy directly, because it is only exported explicitly to module dog.
I have the following code:
When compiling the puppy module, I get the following error
When I change the module-info.java from module animal so that it only reads "exports animal.behavior" (without the "to dog" at the end). The code runs successfully and prints "behave!".
Am I missing something?
Putting transitive or not, the requires does import the dog module.
Making "G and H" a valid option either.
I agree. If Gerson and myself are not confused, this was an example of a question that posed three correct answers and told us to choose two.
While the requires transitive says more than what is needed, it would as far as I can see compile fine and work fine for this purpose.
Whether it would be necessary for the overall situation or not would only be known by seeing more information than given in the problem, but it would certainly be sufficient to allow puppy to access animal.behavior.
The tests are already so full of tricks, this is rough. Either three answers should be accepted (and in fact required) or one of either the requires transitive dog or requires dog choices should be removed.
RTFJD (the JavaDocs are your friends!) If you haven't read them in a long time, then RRTFJD (they might have changed!)