On Mon, 2 May 2022 23:54:33 GMT, Doug Lea <d...@openjdk.org> wrote: >> src/java.base/share/classes/java/util/concurrent/FutureTask.java line 222: >> >>> 220: throw new IllegalStateException("Task has not >>> completed"); >>> 221: } >>> 222: } >> >> I think the code will be more readable if a switch expression and the arrow >> syntax are used >> >> >> return switch(state()) { >> case SUCCESS -> { >> @SuppressWarnings("unchecked") >> V result = (V) outcome; >> yield result; >> } >> case FAILED -> throw new IllegalStateException("Task completed with >> exception"); >> ... >> }; > > Sorry, I don't understand how it would be more readable. I like new switch > features because they extend the range of applicability of switch. But this > (and the two others) are just plain vanilla enum-based switches that were > handled well, and seem to have the same numbers of lines and structure either > way?
It's more readable because it's now clear that the aim is to return the value of the switch. Also a switch expression has to be exhaustive, so there is no need for a 'default'. ------------- PR: https://git.openjdk.java.net/jdk/pull/8490