JavaCompilerCore/resources/bytecode/javFiles/GenericRecordSwitchCase.jav

29 lines
737 B
Plaintext
Raw Normal View History

import java.lang.String;
2024-09-04 08:42:11 +00:00
import java.lang.Integer;
2024-09-04 08:42:11 +00:00
sealed interface List permits LinkedElem, Elem {}
2024-09-04 08:42:11 +00:00
public record LinkedElem<T>(T a,List l) implements List{}
public record Elem<T>(T c) implements List{}
2024-09-04 08:42:11 +00:00
//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 ;
2024-09-04 08:42:11 +00:00
case LinkedElem(a, LinkedElem(e, Elem(f))) -> a;
default -> null;
};
}
}