Почему явный аргумент типа должен быть заменен алмазом?

Я использую Android Studio, и я пишу это:

List<Button> buttons = new ArrayList<Button>(); 

У меня есть это сообщение:

Явный аргумент типа Кнопка должна быть заменена на <>

Мне любопытно, почему лучше использовать алмаз?

 List<Button> buttons = new ArrayList<>(); 

РЕДАКТИРОВАТЬ :
Я не согласен с дубликатом вообще! Я видел этот ответ раньше, и он сравнивает явный аргумент без аргумента вообще, тогда как я сравниваю явный аргумент с неявным аргументом!

    Он менее подробен, рассмотрим следующие

     Map<String,List<String>> map = new HashMap<String,List<String>>(); 

    против

     Map<String,List<String>> map = new HashMap<>(); 

    Я думаю, вы бы пошли на второй вариант