Generics die von java.lang.Object direkt extenden führen zu Fehler im Compiler #358

Open
opened 2025-02-26 11:05:05 +00:00 by RubenKraft · 1 comment
Collaborator

Wenn ein Generic explizit von java.lang.Object extendet, führt dies zu einem Compilerfehler.
Bei allen anderen Typen sowie bei keiner Typangabe funktioniert der Compiler wie erwartet.

Der Code

import java.lang.String;


public class Main<T extends java.lang.Object>{
    public static void main(args) {
        String[] w = args;
    }

    public T test(T attr){
        return attr;
    }
}

führt bspw. zu folgendem Fehler:

Der Typ java.lang.Object ist nicht vorhanden
de.dhbw.compiler.parser.SyntaxTreeGenerator.TypeGenerator.convertTypeName(TypeGenerator.java:149)
de.dhbw.compiler.parser.SyntaxTreeGenerator.TypeGenerator.convert(TypeGenerator.java:57)
de.dhbw.compiler.parser.SyntaxTreeGenerator.TypeGenerator.convert(TypeGenerator.java:81)
de.dhbw.compiler.parser.SyntaxTreeGenerator.TypeGenerator.convert(TypeGenerator.java:114)
de.dhbw.compiler.parser.SyntaxTreeGenerator.TypeGenerator.convert(TypeGenerator.java:100)
de.dhbw.compiler.parser.SyntaxTreeGenerator.SyntaxTreeGenerator.createGenerics(SyntaxTreeGenerator.java:598)
de.dhbw.compiler.parser.SyntaxTreeGenerator.SyntaxTreeGenerator.convertClass(SyntaxTreeGenerator.java:149)
de.dhbw.compiler.parser.SyntaxTreeGenerator.SyntaxTreeGenerator.convert(SyntaxTreeGenerator.java:124)
de.dhbw.compiler.core.JavaTXCompiler.parse(JavaTXCompiler.java:618)
de.dhbw.compiler.core.JavaTXCompiler.<init>(JavaTXCompiler.java:107)
de.dhbw.compiler.core.JavaTXCompiler.<init>(JavaTXCompiler.java:82)
Wenn ein Generic explizit von java.lang.Object extendet, führt dies zu einem Compilerfehler. Bei allen anderen Typen sowie bei keiner Typangabe funktioniert der Compiler wie erwartet. Der Code ```java import java.lang.String; public class Main<T extends java.lang.Object>{ public static void main(args) { String[] w = args; } public T test(T attr){ return attr; } } ``` führt bspw. zu folgendem Fehler: ```java Der Typ java.lang.Object ist nicht vorhanden de.dhbw.compiler.parser.SyntaxTreeGenerator.TypeGenerator.convertTypeName(TypeGenerator.java:149) de.dhbw.compiler.parser.SyntaxTreeGenerator.TypeGenerator.convert(TypeGenerator.java:57) de.dhbw.compiler.parser.SyntaxTreeGenerator.TypeGenerator.convert(TypeGenerator.java:81) de.dhbw.compiler.parser.SyntaxTreeGenerator.TypeGenerator.convert(TypeGenerator.java:114) de.dhbw.compiler.parser.SyntaxTreeGenerator.TypeGenerator.convert(TypeGenerator.java:100) de.dhbw.compiler.parser.SyntaxTreeGenerator.SyntaxTreeGenerator.createGenerics(SyntaxTreeGenerator.java:598) de.dhbw.compiler.parser.SyntaxTreeGenerator.SyntaxTreeGenerator.convertClass(SyntaxTreeGenerator.java:149) de.dhbw.compiler.parser.SyntaxTreeGenerator.SyntaxTreeGenerator.convert(SyntaxTreeGenerator.java:124) de.dhbw.compiler.core.JavaTXCompiler.parse(JavaTXCompiler.java:618) de.dhbw.compiler.core.JavaTXCompiler.<init>(JavaTXCompiler.java:107) de.dhbw.compiler.core.JavaTXCompiler.<init>(JavaTXCompiler.java:82) ```
RubenKraft added the
Type
label 2025-02-26 11:05:05 +00:00
Owner

Ich glaube du musst einfach java.lang.Object importieren.
Könnte man natürlich drüber nachdenken ob man das standardmäßig macht.

Ich glaube du musst einfach `java.lang.Object` importieren. Könnte man natürlich drüber nachdenken ob man das standardmäßig macht.
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: JavaTX/JavaCompilerCore#358
No description provided.