On Tue, 22 Nov 2022 18:39:43 GMT, John Hendrikx <jhendr...@openjdk.org> wrote:
> - Remove unsupported/unnecessary SuppressWarning annotations > - Remove reduntant type specifications (use diamond operator) > - Remove unused or duplicate imports > - Remove unnecessary casts (type is already correct type or can be autoboxed) > - Remove unnecessary semi-colons (at end of class definitions, or just > repeated ones) > - Remove redundant super interfaces (interface that is already inherited) > - Remove unused type parameters > - Remove declared checked exceptions that are never thrown > - Add missing `@Override` annotations It's clear that the unnecessary cast removal is causing many discussions, so I think its best to back out that change. The danger in many unnecessary casts is that they can become **real** casts after a seemingly innocuous change, so it is mostly a benefit to make refactors easier to reason about. Unnecessary casts turning into down casts are the ones that will cause trouble: float x, y, z; float a = (float)x * (float)y * (float)z; // unnecessary casts However, after a refactor: double x, y, z; float a = (float)x * (float)y * (float)z; // down casts (no warning!) The extra precision that one may have hoped to gain is still lost. Similarly: Integer number = ... ; Integer x = (Integer) number; // unnecessary cast Refactor: Number number = ... ; Integer x = (Integer) number; // down cast (no warning!) The code may now raise a `ClassCastException` here if `Number` is not an `Integer`. Without the unnecessary cast this would be a compile error to be investigated. ------------- PR: https://git.openjdk.org/jfx/pull/960