RFR: JDK-8306112 Implementation of JEP 445: Unnamed Classes and Instance Main Methods (Preview) [v8]
Jaikiran Pai
jpai at openjdk.org
Fri May 5 09:42:23 UTC 2023
On Mon, 1 May 2023 13:06:24 GMT, Jim Laskey <jlaskey at openjdk.org> 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 152:
> 150:
> 151: List<Method> mains = new ArrayList<>();
> 152: gatherMains(mainClass, mainClass, mains);
The `try` block above is there to find `public static void main(String[])` in the launched class. When it's not found, then we gather the potential main methods (as listed in the JEP). The implementation of `gatherMains(...)`, in its current form starts gathering the main methods from `refc.getSuperclass()`, where `refc` in this case is the `mainClass`, which is the launched class.
So if I'm reading this correctly, then I think it's going to completely skip the launched class for looking any potential main methods and instead start looking for them in the launched class' super hierarchy.
src/java.base/share/classes/jdk/internal/misc/MainMethodFinder.java line 158:
> 156: }
> 157:
> 158: mains.sort(MainMethodFinder::compareMethods);
Perhaps skip the call to `sort` and just return the found main method if `mains.size() == 1`?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/13689#discussion_r1185890136
PR Review Comment: https://git.openjdk.org/jdk/pull/13689#discussion_r1185892782
More information about the core-libs-dev
mailing list