4 ms·
fyi Java 16 did add pattern matching for instance of so you can avoid the cast.
by mosdl 5y ago
fyi Java 16 did add pattern matching for instance of so you can avoid the cast.
- timmg 5y agoI was going to point this out, too. I thought it also supported cases like: if (foo instanceof Bar) { // foo is typed as Bar in this block } Is that true, or did I get that wrong?
- qw 5y agoif (o instanceof String s) { var foo = s.indexOf("bar"); } Java 17 introduced a preview of the same feature for switch statements return switch (o) { case Integer i -> String.format("int %d", i); case Long l -> String.format("long %d", l); case Double d -> String.format("double %f", d); case String s -> String.format("String %s", s); default -> o.toString(); }; Future versions will have improved support: http://openjdk.java.net/jeps/420 http://openjdk.java.net/jeps/420)
- MH15 5y agoI use the `o instanceof Class c` thing all the time in my hobby compiler on Java 16 right now. The Java 17 version will greatly simplify much of my codebase.