2015-10-14 17 views
24

Używam Android Studio to piszę:Dlaczego argument typu jawnego powinien zostać zastąpiony przez diament?

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

mam komunikat:

typu Explicit Przycisk argument powinien zostać zastąpiony przez <>

jestem ciekawe, dlaczego lepiej byłoby zamiast tego używać diamentu?

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

EDIT:
Nie zgadzam się z dwóch egzemplarzach w ogóle! Widziałem tę odpowiedź wcześniej i porównuje jawny argument do żadnego argumentu, podczas gdy porównuję jawny argument z ukrytą argumentacją!

+0

To nie jest to, że trzeba to zrobić, ale to Ulepsz swój kod (krócej), więc mam pytanie: dlaczego nie skorzystać z operatora diamentów? – Pshemo

+0

Myślę, że więcej informacji jest lepszych dla kompilatora, ale tak naprawdę nie wiem jak to działa ... –

+1

@DanChaltiel to ułatwia życie kompilatora, ale powinieneś wymagać coraz więcej od kompilatora :) –

Odpowiedz

28

Jest mniej gadatliwy, należy rozważyć następujące

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

vs

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

myślę, że idziesz do drugiej opcji

+7

Nie ma więc żadnej różnicy oprócz "pięknej"? Pójdę po to! –

+1

@DanChaltiel Myślę, że możesz również argumentować, że później łatwiej jest to zmienić, ponieważ musisz dokonać zmiany przy każdym użyciu jawnej wersji. Mam na myśli np. zmiana z 'String' na' Integer'. – lucidbrot

Powiązane problemy