В Java 10 появилось ключевое слово var. Теперь можно не писать тип переменной. В некоторых случаях компилятор сам его выведет. Например, работает вот такой код:

public class Script {
    public static void main(String[] args) {
        var hello = "Hello type inference!";
        System.out.println(hello);
    }
}

Эта фича сокращает объем кода, который надо написать. Она удобна, когда у вас есть несколько вложенных вызовов, в которые передается параметр и вы хотите поменять тип этого параметра. В этом случае вам не придется переопределять сигнатуры вызываемых методов.

К недостаткам можно отнести снижение читаемости кода. Если раньше при объявлении переменной сразу был ясен ее тип, то сейчас надо переходить к определению функции, возвращающей объект. В IDE это сделать довольно просто, но если вы читаете пуллреквест на github, это сделать сложнее.

Лично мне эта функциональность нравится и она удобна в большинстве случаев, но есть люди, которые считают это шагом назад в развитии Java.