Ist in dem Fall ja gar nicht als Expression genutzt, und so wie es genutzt wird ist's deutlch schöner als das "normale" switch-StatementAlternativ würde ich auch überlegen, als Anfänger die neuen Features noch nicht zu berücksichtigen. Switch Expressions (JEP 325) sind nicht unbedingt etwas, das ich einem Anfänger nahe legen würde ...
Also was schöner ist oder nicht muss man ja nicht diskutieren. Aber das wird als "switch expression" geführt in den JEP (wobei 325 das alte aus JDK 12 ist, 354 ist das finalisierte in JDK 13. Sorry dafür).Ist in dem Fall ja gar nicht als Expression genutzt, und so wie es genutzt wird ist's deutlch schöner als das "normale" switch-Statement![]()
"Schöner" meint in dem Fall auch eigentlich eher "weniger Fehleranfällig, da scoped und ohne fall-throughAlso was schöner ist oder nicht muss man ja nicht diskutieren.
361 in Java 14, 354 war die zweite PreviewAber das wird als "switch expression" geführt in den JEP (wobei 325 das alte aus JDK 12 ist, 354 ist das finalisierte in JDK 13. Sorry dafür).
Gut, könnte sein, dann fehlt aber die Hälfte der FehlermeldungenUnd hast Du mehr zu sehen bekommen als den kleinen Ausschnitt aus der Fehlermeldung? Da ist ja nur das case mit dem entsprechenden increment-Operator auf einer Variable zu sehen. Daher ist unklar, ob das nun eine switch expression ist (und der Wert von der incrementierten Variable noch irgendwie verwendet wird) oder ob es ein "normales" Statement ist. Beides müsste doch möglich sein ...
Wenn man dafür bezahlt ist das ja auch sinnvoll ;PIch bin bezüglich neuer Java Features bekannter Weise konservativer als Du und nutze weiter die LTS Versionen und gedulde mich, ehe ich mich in die ganzen tollen neuen Features stürzen darf
Die relevanten Teile der Fehlermeldung:Also zu erstmal da wir in der Schule mit JDK12 arbeiten verwende ich das auch.
[...]
Ich kann mir auch nicht genau erklären woran es liegt. Zu mindestens nicht alleine.
multiple case labels are a preview feature and are disabled by default.
switch rules are a preview feature and are disabled by default.
Musste hierbei grad an dich denken, ist von einem am OpenJDK beteiligenAber vielleicht schaue ich dann demnächst auch noch etwas mehr auf die non LTS Versionen ... Uninteressant ist es ja nicht und dann ist der Schritt zwischen zwei LTS Versionen nicht mehr so groß. (17 wird wieder eine LTS Version, oder? Dann dürfte es im 4ten Quartal nächstes Jahr wieder so weit sein, dass man sich die Neuerungen anschauen muss)
Moving from 11 to 17 gives you the worst of both worlds. You end up investing more effort in the upgrade, which may have removed API elements without any deprecation warnings (the JDK's development process ignores which versions companies choose to sell LTS for) as well as missing out on constant performance improvements and features. LTS is mostly for legacy, or applications that aren't heavily developed, and when chosen appropriately, it's best to remain on such a version for 5-6 years so as not to end up spending too much effort on migration. If you want 17, you might as well use 16. And if you want LTS and are currently on 11, you probably don't want 17 and might want to wait a few more years, as your application doesn't need or want new features, anyway.
Put another way, if you're eagerly waiting for a new release with LTS, LTS probably isn't for you. If you're looking with horror at a new release with LTS as signifying the end of updates for your current version, then it is for you. Or even more simply, the law of Java LTS is: if you want it -- you don't need it; if you need it -- you don't want it.
Puh, dann haben ja alle nochmal Glück gehabt, die von 8 auf 17 wechselnMoving from 11 to 17 gives you the worst of both worlds.
Ich auch, darum bin ich ja so erleichtertWovon ihr alle redet, ich arbeite noch mit Java 8![]()