4 ms·
Add Java to that list.
by mnw21cam 5y ago
Add Java to that list.
- csharptwdec19 5y agoSame for C#. Any narrowing truncation needs to be an explicit cast. Widening is typically allowed implicitly, although in the case of the 'decimal' (128 bit struct representing a 'higher precision' floating point) type you still need an explicit cast from a 'double', since there are cases where that conversion can still change the value or fail (i.e. Infinity/NaN)
- pjmlp 5y agoMicrosoft is considering turning on by default checked arithmetic in the 2022 Visual Studio templates, by the way.
- paulddraper 5y agoNoo! This idea is super new and was invented by Go/Rust.
- irogers 5y agoIt can catch people by surprise that Java's narrowing conversions may not preserve the sign. For example, the following is broken: class TimestampedObject implements Comparable<TimestampedObject> { long timestamp; int compareTo(TimestampedObject other) { return (int)(timestamp - other.timestamp); } ... } ErrorProne catches this: https://errorprone.info/bugpattern/BadComparable https://errorprone.info/bugpattern/BadComparable