package dfa; public class SwitchPrimitiveCompleteness { public static void main(String[] args) { withErasureSwitch(1); testBoolean(); testChar(); testInt(); testLong(); testFloat(); testDouble(); testBooleanObject(); testCharObject(); testIntObject(); testLongObject(); testFloatObject(); testDoubleObject(); testNumber(); testObject(); } public static boolean withErasureSwitch(T i) { return switch (i) { case long a -> false; }; } private static void testObject() { Object d = 0.0; switch (d) { case 1 -> System.out.println("1"); //error case double ob -> System.out.println("1"); } switch (d) { case 2.0 -> System.out.println("1"); //error } switch (d) { case 2.0 -> System.out.println("1"); //error case Double ob -> System.out.println("1"); } switch (d) { case 2.0 -> System.out.println("1"); //error case Double ob -> System.out.println("1"); default -> System.out.println("2"); } switch (d) { case 2.0 -> System.out.println("1"); //error case Object a -> System.out.println("2"); } } private static void testNumber() { Number d = 0.0; switch (d) { case 1 -> System.out.println("1"); //error case double ob -> System.out.println("1"); } switch (d) { case 2.0 -> System.out.println("1"); //error } switch (d) { case 2.0 -> System.out.println("1"); //error case Double ob -> System.out.println("1"); } switch (d) { case 2.0 -> System.out.println("1"); //error case Double ob -> System.out.println("1"); default -> System.out.println("2"); } switch (d) { case 2.0 -> System.out.println("1"); //error case Object a -> System.out.println("2"); } } private static void testDoubleObject() { Double d = 0.0; switch (d) { case 0.1 -> System.out.println("1"); case double ob -> System.out.println("1"); } switch (d) { //error case 2.0 -> System.out.println("1"); } switch (d) { case 2.0 -> System.out.println("1"); case Double ob -> System.out.println("1"); } switch (d) { case 2.0 -> System.out.println("1"); case Double ob -> System.out.println("1"); //error default -> System.out.println("2"); //error } switch (d) { case 2.0 -> System.out.println("1"); case Object a -> System.out.println("2"); } } private static void testDouble() { double d = 0.0; switch (d) { case 0.1 -> System.out.println("1"); case double ob -> System.out.println("1"); } switch (d) { //error case 2.0 -> System.out.println("1"); } switch (d) { case 2.0 -> System.out.println("1"); case Double ob -> System.out.println("1"); } switch (d) { case 2.0 -> System.out.println("1"); case Double ob -> System.out.println("1"); //error default -> System.out.println("2"); //error } switch (d) { case 2.0 -> System.out.println("1"); case Object a -> System.out.println("2"); } } private static void testFloat() { float f = 0.0F; switch (f) { case 2.0F -> System.out.println("1"); case float ob -> System.out.println("1"); } switch (f) { //error case 2.0F -> System.out.println("1"); } switch (f) { case 2.0F -> System.out.println("1"); case Float ob -> System.out.println("1"); } switch (f) { case 2.0F -> System.out.println("1"); case Float ob -> System.out.println("1"); //error default -> System.out.println("2"); //error } switch (f) { case 2.0F -> System.out.println("1"); case Object a -> System.out.println("2"); } } private static void testFloatObject() { Float f = 0.0F; switch (f) { case 2.0F -> System.out.println("1"); case float ob -> System.out.println("1"); } switch (f) { case 2.0F -> System.out.println("1"); } switch (f) { case 2.0F -> System.out.println("1"); case Float ob -> System.out.println("1"); } switch (f) { case 2.0F -> System.out.println("1"); case Float ob -> System.out.println("1"); //error default -> System.out.println("2"); //error } switch (f) { case 2.0F -> System.out.println("1"); case Object a -> System.out.println("2"); } } private static void testLongObject() { Long l = 1L; switch (l) { case 2L -> System.out.println("1"); case long ob -> System.out.println("1"); } switch (l) { case 1L -> System.out.println("1"); } switch (l) { case 3L -> System.out.println("1"); case Long ob -> System.out.println("1"); } switch (l) { case 3L -> System.out.println("1"); case Double ob -> System.out.println("1"); //error default -> System.out.println("2"); } switch (l) { case 1L -> System.out.println("1"); case Object a -> System.out.println("2"); } } private static void testLong() { long l = 1L; switch (l) { case 2L -> System.out.println("1"); case long ob -> System.out.println("1"); } switch (l) { //error case 1L -> System.out.println("1"); } switch (l) { case 3L -> System.out.println("1"); case Long ob -> System.out.println("1"); } switch (l) { case 3L -> System.out.println("1"); case Double ob -> System.out.println("1"); //error default -> System.out.println("2"); } switch (l) { case 1L -> System.out.println("1"); case long a -> System.out.println("2"); } switch (l) { case 1L -> System.out.println("1"); case Object a -> System.out.println("2"); } } private static void testIntObject() { Integer i = 1; switch (i) { case 2 -> System.out.println("1"); case int ob -> System.out.println("1"); } switch (i) { case 1 -> System.out.println("1"); } switch (i) { case 3 -> System.out.println("1"); case Integer ob -> System.out.println("1"); //error default -> System.out.println("2"); //error } switch (i) { case 1 -> System.out.println("1"); case Integer a -> System.out.println("2"); } switch (i) { case 1 -> System.out.println("1"); case Object a -> System.out.println("2"); } } private static void testInt() { int i = 1; switch (i) { case 2 -> System.out.println("1"); case int ob -> System.out.println("1"); } switch (i) { case 1 -> System.out.println("1"); } switch (i) { case 3 -> System.out.println("1"); case Integer ob -> System.out.println("1"); //error default -> System.out.println("2"); //error } switch (i) { case 1 -> System.out.println("1"); case Integer a -> System.out.println("2"); } switch (i) { case 1 -> System.out.println("1"); case Object a -> System.out.println("2"); } } private static void testCharObject() { Character b = 'a'; switch (b) { case 'a' -> System.out.println("1"); case char ob -> System.out.println("1"); } switch (b) { case 'a' -> System.out.println("1"); } switch (b) { case 'a' -> System.out.println("1"); case Character ob -> System.out.println("1"); //error default -> System.out.println("2"); //error } switch (b) { case 'a' -> System.out.println("1"); case Character a -> System.out.println("2"); } switch (b) { case 'a' -> System.out.println("1"); case Object a -> System.out.println("2"); } } private static void testChar() { char b = 'a'; switch (b) { case 'a' -> System.out.println("1"); case char ob -> System.out.println("1"); } switch (b) { case 'a' -> System.out.println("1"); } switch (b) { case 'a' -> System.out.println("1"); case Character ob -> System.out.println("1"); //error default -> System.out.println("2"); //error } switch (b) { case 'a' -> System.out.println("1"); case Character a -> System.out.println("2"); } switch (b) { case 'a' -> System.out.println("1"); case Object a -> System.out.println("2"); } } private static void testBooleanObject() { Boolean b = true; switch (b) { case true -> System.out.println("1"); case false -> System.out.println("1"); } switch (b) { //error case false -> System.out.println("1"); } switch (b) { case true -> System.out.println("1"); case false -> System.out.println("1"); default -> System.out.println("2"); //error } switch (b) { case true -> System.out.println("1"); case false -> System.out.println("1"); case Boolean a -> System.out.println("2"); //error } switch (b) { case true -> System.out.println("1"); case false -> System.out.println("1"); case boolean a -> System.out.println("2"); } switch (b) { case false -> System.out.println("1"); case boolean a -> System.out.println("2"); } switch (b) { case true -> System.out.println("1"); case false -> System.out.println("1"); case Object a -> System.out.println("2"); //error } } private static void testBoolean() { boolean b = true; switch (b) { case true -> System.out.println("1"); case false -> System.out.println("1"); } switch (b) { //error case false -> System.out.println("1"); } switch (b) { case true -> System.out.println("1"); case false -> System.out.println("1"); default -> System.out.println("2"); //error } switch (b) { case true -> System.out.println("1"); case false -> System.out.println("1"); case Boolean a -> System.out.println("2"); //error } switch (b) { case true -> System.out.println("1"); case false -> System.out.println("1"); case boolean a -> System.out.println("2"); //error } switch (b) { case false -> System.out.println("1"); case boolean a -> System.out.println("2"); } switch (b) { case true -> System.out.println("1"); case false -> System.out.println("1"); case Object a -> System.out.println("2"); //error } } }