On Mon, 1 May 2023 13:06:24 GMT, Jim Laskey <[email protected]> wrote:
>> Add flexible main methods and anonymous main classes to the Java language.
>
> Jim Laskey has updated the pull request incrementally with two additional
> commits since the last revision:
>
> - Anonymous main classes renamed to unnamed classes
> - Add test
src/java.base/share/classes/jdk/internal/misc/MainMethodFinder.java line 139:
> 137: public static Method findMainMethod(Class<?> mainClass) throws
> NoSuchMethodException {
> 138: try {
> 139: Method mainMethod = mainClass.getMethod("main",
> String[].class);
Hello Jim, I think this specific line is trying to find a `public static void
main(String[])` method from the launched class. In the current form of this
implementation, this has the potential of returning a non-static `public void
main(String[])` from here. I think a `isStatic(mainMethod)` would be needed
here before returning this method as the found method.
src/java.base/share/classes/jdk/internal/misc/MainMethodFinder.java line 142:
> 140:
> 141: if (mainMethod.getDeclaringClass() != mainClass) {
> 142: System.err.println("WARNING: static main in super class
> will be deprecated.");
Similarly, this warning would have to be logged only if the method is `static`.
Furthermore, do you think we should include the declaring class in the log
message to provide some context on what's causing this warning? Something like:
> WARNING: static main(String[]) in super class foo.bar.Parent will be
> deprecated.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/13689#discussion_r1185882851
PR Review Comment: https://git.openjdk.org/jdk/pull/13689#discussion_r1185885497