Overloaded operators are still a subject of controversy. They are almost indispensable for certain
kinds of mathematical work, but people who oppose adding them to the Java language point out, quite
rightly, that the feature was badly abused in C++ for nonmathematical purposes, making code much
harder to read than necessary. Most Java applications are nonmathematical in nature. One could make
a good argument that commercial applications have no need for operator overloading, except that
commercial applications do use (or should use) BigDecimal arithmetic, and it would be really nice
to be able to use + and - and * and / with BigDecimal numbers. Much the same can be said of so-called
"lightweight classes": their greatest value would lie in supporting numerical concepts such as
complex numbers and interval arithmetic.
We have an interesting decision to make that is more a political or business question than a
technical one: should the Java language be extended to support the needs of mathematical
applications? If so, then I would argue strongly for introducing operator overloading and lightweight
classes -- I'm pretty sure such facilities would also get used for other purposes. If not, then
maybe we should just make + and - and * and / work for the BigInteger and BigDecimal classes as a
special case, much the same way that + is already a special case for the String class.