Methoden bekommen immer den Access Modifier "PUBLIC" #286

Closed
opened 2024-03-10 22:39:34 +00:00 by i21023 · 0 comments
Collaborator

Methoden scheinen im Bytecode immer das Public-Flag zu bekommen.

Wenn die Methodendeklaration

void bar(){}

lautet, wird im Bytecode fälschlicherweise das PUBLIC Flag gesetzt, obwohl es package-private/default (also kein flag gesetzt) sein müsste.

Problematisch wird es, wenn die Sichbarkeit der Methode auf private oder protected gesetzt wird, da dann sowohl das public, als auch das private/protected flag gesetzt wird.

Beispiel:

public class Foo{
    private void bar(){}
}

Output von "javap -private Foo.class":

public class Foo {
  public Foo();
  public private void bar();
  public static {};
}

Dadurch sind die generierten Class-Files fehlerhaft

Methoden scheinen im Bytecode immer das Public-Flag zu bekommen. Wenn die Methodendeklaration `void bar(){}` lautet, wird im Bytecode fälschlicherweise das PUBLIC Flag gesetzt, obwohl es package-private/default (also kein flag gesetzt) sein müsste. Problematisch wird es, wenn die Sichbarkeit der Methode auf private oder protected gesetzt wird, da dann sowohl das public, als auch das private/protected flag gesetzt wird. **Beispiel:** ``` public class Foo{ private void bar(){} } ``` **Output von "javap -private Foo.class":** ``` public class Foo { public Foo(); public private void bar(); public static {}; } ``` Dadurch sind die generierten Class-Files fehlerhaft
dholle added the
Codegen
confirmed
labels 2024-03-11 09:31:14 +00:00
dholle self-assigned this 2024-03-11 09:31:22 +00:00
dholle referenced this issue from a commit 2024-03-11 15:16:17 +00:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: JavaTX/JavaCompilerCore#286
No description provided.