JavaCompilerCore/resources/bytecode/javFiles/GenericRecordSwitchCase.jav
Ruben 8f094eb025
Some checks failed
Build and Test with Maven / Build-and-test-with-Maven (push) Failing after 5m20s
refactor: refactoring
2024-09-04 10:42:11 +02:00

29 lines
737 B
Java

import java.lang.String;
import java.lang.Integer;
sealed interface List permits LinkedElem, Elem {}
public record LinkedElem<T>(T a,List l) implements List{}
public record Elem<T>(T c) implements List{}
//Wie gehe ich mit Type Erasure durch den Compiler um? Elemente werden wegen Generics immer zu Object umgewandelt, default Case muss also auch vom Type Object sein.
//Dadurch entsteht folgendes Constraint: java.lang.Integer <. T, das nicht aufgelöst werden kann.
public class GenericRecordSwitchCase {
public main(o) {
return switch(o) {
case LinkedElem(a, Elem(e)) -> a ;
case LinkedElem(a, LinkedElem(e, Elem(f))) -> a;
default -> null;
};
}
}