On Mon, 21 Jul 2025 11:57:38 GMT, David Beaumont <[email protected]> wrote:
>> src/java.base/share/classes/jdk/internal/jimage/ImageReader.java line 279:
>>
>>> 277: }
>>> 278:
>>> 279: /// Returns a node in the JRT filesystem namespace, or null if
>>> no resource or
>>
>> Using the standard javadoc tags for @param, @return can give some
>> consistency and readability even for internal methods.
>
> Absolutely. This sort of thing is always a balance between clarity and
> conciseness. But here I think you're right so I pulled the `name` into a
> `@param`. I dislike doing it for the return types in most cases though, since
> that encourages duplication with the method's first sentence.
The {@return 1st sentence text} can be used on the first line and javadoc will
put the text in both places without needing duplication in the source.
[(javadoc tag
specification](https://docs.oracle.com/en/java/javase/22/docs/specs/javadoc/doc-comment-spec.html))
>> src/java.base/share/classes/jdk/internal/jimage/ImageReader.java line 611:
>>
>>> 609: *
>>> 610: * <p>If this node is not a directory ({@code isDirectory() ==
>>> false})
>>> 611: * then this method will throw {@link IllegalStateException}.
>>
>> A mismatch in overriding could give inconsistent results (since the impl
>> does not call `isDirectory()`.
>
> True, though would you prefer to change the comment ("by default this method
> throws... and is overridden by directory subclasses...") or the
> implementation of things like `getChildNames()` so they call `isDirectory()` ?
>
> Personally I dislike this "test and call" approach and would rather have
> restructured the API to be more object-oriented, and have callers use a more
> structured dispatch mechanism (but this would incur cost of lambdas etc.),
> but that's a really disruptive change.
>
> Alternatively a type token/enum of some sort could be used to define node
> type. This is all internal/trusted API though, so I'm happy with trusting
> that things "do what they say" (it's going to be really obvious if something
> claims to be a directory and then throws when asks for its child names, and
> that's almost exclusively why anyone calls isDirectory() to start with).
>
> So in summary, apart from maybe tweaking the comment slightly, I think this
> is fine as is.
I would change the comment.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/26054#discussion_r2222946949
PR Review Comment: https://git.openjdk.org/jdk/pull/26054#discussion_r2222934325