Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I 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?



  if (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)


I 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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: