The use of var doesn't come without its share of challenges, for both the developers of the Java language and its users. Let's start with the reasons why var has limited usage.
Challenges
Limiting the scope of failed assumptions
As you know, the use of var types is limited to local variables in Java. They are not allowed in the public API, as method parameters or as the return type of methods. Some languages support type inference for all types of variables. Java may allow us to do so in the future, but we don't know when.
However, there are strong reasons for limiting the scope of the inferred variables, to spot the errors due to mismatch of assumptions and the actual, early on. The contracts of the public...