You fail to see that type inference is optional. So yes for readability's sake, in your first example I wouldn't omit the "int", but in simpler cases you CAN omit if you want. And that's just nice, end of story.
So instead of doing this:
Foo foo = new Foo("bar");
You can do this: Foo foo = Foo.of("bar");If you were using a factory, var would infer the factory signature's type, which would normally be the interface.
Actually, people left Java land because they couldn't express what they needed to without using complicated design patterns.
So you think using functions is enterprisey and over-engineering things?