2011-12-13 7 views
5

Co najlepszym sposobem:Jak utworzyć instancję kolekcji w języku Java za pomocą programu Generics?

Set<String> myStringSet = new HashSet(); 

Albo

Set<String> myStringSet = new HashSet<String>(); 

Żadne z powyższych?

Czy to ma znaczenie?

+0

Sprawdź to pytanie i akceptowaną odpowiedź: http://stackoverflow.com/questions/4166966/what-is-the-point-of-the-diamond-operator-in-java-7 –

+2

W Javie SE 7 (JUŻ TERAZ!) 'Set myStringSet = new HashSet <>();' –

Odpowiedz

5

Ten ostatni:

Set<String> myStringSet = new HashSet<String>(); 

Zobacz the Java documentation on generic types aby uzyskać więcej informacji.

+1

Po prostu zacznij używać wersji bez typu ... kiedy zdasz sobie sprawę, że wszystkie irytujące odlewy musisz wykonać, zaczniesz korzystać z wpisanych kolekcji ! –

3

Zawsze należy zainicjować kolekcję z uniwersalnym typem

Set<String> myStringSet = new HashSet<String>(); 

przeciwnym razie otrzymasz ostrzeżenie

Type safety: The expression of type HashSet needs unchecked conversion 
to conform to Set <String>. 
0

Drugi jest najlepszym i najbezpieczniejszym sposobem, aby kontynuować.

Set<String> myStringSet = new HashSet(); skompiluje i poda ostrzeżenie ...uses unchecked or unsafe operations.. Pojawia się on w Java 5 i nowszych wersjach, jeśli używasz kolekcji bez generycznych specyfikatorów typów (HashSet() zamiast HashSet<String>()).

Pominięcie specyfikatora rodzaju ogólnego uniemożliwi kompilatorowi sprawdzenie, czy używasz HashSet w sposób bezpieczny dla typu, używając generycznych.

Powiązane problemy