Native methods in unnamed classes

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Thu Jul 20 09:20:45 UTC 2023


Good point Tagir.

IMHO this is something that needs to be looked at. While it's true that 
the compiler will have to come up with a name for the class, there's no 
guarantee anywhere that such a name will be stable. E.g. perhaps the 
Java compiler can change the name of the class depending on the contents 
it saw at the time of compiling (we don't do this, but JLS doesn't say 
it can't be done). Which then would leave you with a set of *unstable* 
native methods.

Maurizio

On 20/07/2023 10:17, Tagir Valeev wrote:
> Hello!
>
> A quick question about unnamed classes specification draft [1]. I
> don't see that native methods are explicitly forbidden inside unnamed
> classes. If they are allowed, it's not quite clear how to define the
> name of the corresponding method in the native library according to
> [2], as the binary name of an unnamed class can be arbitrarily defined
> by java compiler (JLS 13.1). Or is this not a problem?
>
> With best regards,
> Tagir Valeev
>
> [1] https://cr.openjdk.org/~gbierman/jep445/jep445-20230524/specs/unnamed-classes-instance-main-methods-jls.html
> [2] https://docs.oracle.com/en/java/javase/20/docs/specs/jni/design.html#resolving-native-method-names


More information about the amber-spec-experts mailing list