8f094eb025
Some checks failed
Build and Test with Maven / Build-and-test-with-Maven (push) Failing after 5m20s
29 lines
737 B
Java
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;
|
|
};
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|