Jakie znaczenie ma <E>
na kodzie Collection<E>
?Co oznacza <E> w kolekcji <E>?
Odpowiedz
Jest to użycie leków generycznych. Sprawdź to intro. A następnie nie zapomnij przeczytać tego tutorial.
Fragment następująco (która porównuje zastosowanie obsady kontra stosowania leków generycznych):
Gdy pojawi się kod < Tekst>, przeczytaj ją jako „typu”; deklaracja powyżej brzmi "Kolekcja ciągu c." Kod używający generycznych jest bardziej przejrzysty, a bezpieczniejszy. Usunęliśmy niebezpieczne rzuty i kilka dodatkowych nawiasów . Co ważniejsze, mamy przeniósł część opisu sposobu z komentarzem do jego podpisu , więc kompilator może sprawdzić w czasie kompilacji, że typ ograniczenia nie są łamane w okresie czasie. Ponieważ program kompiluje bez ostrzeżeń, możemy stwierdzić z pewnością, że nie wyrzuci wyjątku ClassCastException w czasie wykonywania. Efekt sieciowy z użyciem generycznych, , w szczególności w dużych programach, to poprawiona czytelność i niezawodność.
Na przykład, interfejs z listy jest
public interface List<E> {
void add(E x);
Iterator<E> iterator();
}
Oznacza to, że można zbudować listę, której zawartość jest wszystkim tym samym wyraźną typu (nie tylko od typu obiektu), nawet jeśli masz sam zdefiniował typ. Tak więc, jeśli utworzyć klasę nazwisko można napisać
List<Name> nameList = new List<Name>();
a następnie napełnić go przypadkach nazwiska i bezpośrednio pobierać instancji nazwę od niej, bez konieczności odlewane lub w inny sposób o to martwić, ponieważ zawsze otrzymasz albo nazwą instancja lub null z powrotem, nigdy instancja innego typu.
Co ważniejsze, nie można wstawić niczego innego niż instancja Name w takiej liście, ponieważ nie powiedzie się ona podczas kompilacji.
nameList.add(false); //Fails!
nameList.add(new Name("John","Smith")); //Succeeds supposing Name has a
//firstName, lastName constructor
Przeczytałem 'List
Oznacza to, że mamy do czynienia z kolekcją przedmiotów o typie E
. Wyobraź sobie, że masz filiżankę herbaty. Zamiast herbaty, to może również posiadać kawę więc ma to sens, aby opisać ten kielich jako ogólny jednostki:
class Cup<T> { … }
teraz można ją wypełnić, albo z kawy lub herbaty (lub coś innego):
Cup<Tea> cuppa = new Cup<Tea>();
Cup<Coffee> foamee = new Cup<Coffee>();
Aby to zadziałało, zarówno Tea
, jak i Coffee
musiałyby być typami zdefiniowanymi w programie.
To jest ograniczenie czasu kompilacji na swoim kodzie.Wracając z przykładu (raczej bezużytecznego), kolekcje (tablice, listy ...) zwykle zawierają elementy typu , np., np. liczby całkowite lub ciągi. Generics pomoże ci wyrazić to w Javie:
Collection<String> strList = new ArrayList<String>();
strList.add("Foobar"); // Works.
strList.add(42); // Compile error!
Zauważ powyżej błąd kompilacji? Dostajesz to tylko wtedy, gdy używasz generycznych. Poniższy kod również działa, ale nie dałby miła wiadomość o błędzie:
Collection strList = new ArrayList();
strList.add("Foobar"); // Works.
strList.add(42); // Works now. Do we really want this?!
- 1. Co oznacza operator Bash <<<?
- 2. Co oznacza `<< =` w SBT?
- 3. W języku PHP, co oznacza "<<<"?
- 4. Co oznacza <- oznacza w Javie?
- 5. Co oznacza "/// <exclude/>"?
- 6. Co oznacza "NSBinarySearchingFirstEqual = (1UL << 8)" w definicji wyliczenia?
- 7. Co oznacza <$> w Haskell?
- 8. Co oznacza symbol <> w MSIL?
- 9. Co oznacza <%=h ... %> w Railsach?
- 10. co <> oznacza w Pythonie
- 11. Co oznacza ten symbol w PHP <? =
- 12. Co oznacza "<<" (podwójne mniej niż) bez kłótni?
- 13. Co oznacza typedef enum składniowa, jak "1 << 0"?
- 14. scalac -explaintypes: Co oznacza "<notype><: X?" oznaczać?
- 15. Php co znaczy <<<?
- 16. <% $, <% @, <% =, <% # ... o co chodzi?
- 17. ASP.NET: Co oznacza znak "#" rozpoczynający <% %>?
- 18. Co dokładnie oznacza <[email protected]>?
- 19. Storyboard, co oznacza znacznik <animations/>?
- 20. Co oznacza <> dla genericów java?
- 21. C++: Co oznacza szablon <class>?
- 22. Co robi << w Pythonie?
- 23. Co oznacza "$ <" w przypadku użycia w argumencie g ++?
- 24. Co oznacza symbol <??> w języku C# .NET?
- 25. Co oznacza <T> (nawiasy ostrokątne) w języku Java?
- 26. Co <c-r> = oznacza w vim
- 27. Co oznacza <non-object> w alokacji "migawki"?
- 28. W języku C++ co oznacza szablon <>?
- 29. Co oznacza mapa <?, ?> w języku Java?
- 30. Co oznacza "typ rekursywny <method name>" w Scali?
Potrzebuję twojej pomocy, aby lepiej poznać kolekcje. – Johanna