Klasy i metody generyczne
Parametryzowanie własnych typów
Klasy i metody generyczne to bezpłatna lekcja Dart Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Dart Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Dart Academy zawiera 4 lekcji w sumie.
Własne generyki
Wbudowane typy, takie jak List, są generyczne, ale można też tworzyć własne generyki. Parametr typu pozwala klasie dostosować się do dowolnego typu wybranego przez wywołującego. 🧩
Nazywanie parametru typu
Parametr typu dodaje się w nawiasach ostrych po nazwie klasy. Litera T jest często używanym symbolem zastępczym reprezentującym rzeczywisty typ.
class Box<T> {
T value;
Box(this.value);
}Używanie T wewnątrz klasy
Wewnątrz klasy T zachowuje się jak każda nazwa typu. Można używać go dla pól, parametrów i wartości zwracanych w całym ciele klasy.
class Box<T> {
T value;
Box(this.value);
T get() => value;
}Uzupełnianie typu
Podczas tworzenia obiektu wybiera się rzeczywisty typ. W tym przypadku T staje się int, więc ten pojemnik będzie przechowywać wyłącznie liczby całkowite.
var b = Box<int>(42);
int n = b.get();Pozwól Dartowi wywnioskować typ
Często można pominąć jawne określenie typu, ponieważ Dart odczytuje go z argumentu. Wnioskowanie rozpoznaje String i samodzielnie ustawia T.
var b = Box('hi');Wiele parametrów typu
Klasa może przyjmować więcej niż jeden parametr typu, oddzielony przecinkami. Para przechowująca dwa różne typy to klasyczny przykład.
class Pair<A, B> {
A first;
B second;
Pair(this.first, this.second);
}Metody generyczne
Pojedynczą metodę również można uczynić generyczną, nawet w klasie niegenerycznej. Parametr typu należy umieścić bezpośrednio przed listą parametrów.
T firstOf<T>(List<T> items) => items[0];Metody też wnioskują typ
Metoda generyczna zwykle wnioskuje swój typ na podstawie przekazanych argumentów. Należy wywołać ją normalnie, a Dart ustali resztę.
var n = firstOf([1, 2, 3]);
var s = firstOf(['a', 'b']);Powrót bezpieczeństwa typów
Ponieważ metoda śledzi T, wynik zachowuje właściwy typ. firstOf dla listy String zwraca String, bez potrzeby rzutowania.
String x = firstOf(['a', 'b']);Wielokrotne użycie bez powtórzeń
Jedna definicja generyczna zastępuje wiele wersji utworzonych metodą kopiuj-wklej. Logikę zapisuje się raz, a następnie działa ona tak samo dla int, String i dowolnego własnego typu.
Wybieraj jasne nazwy
Pojedyncze litery, takie jak T, E czy K, są konwencjonalne, ale opisowa nazwa może ułatwić zrozumienie kodu. W złożonym kodzie przejrzystość jest ważniejsza niż zwięzłość.
Szybkie sprawdzenie
Gdzie umieszcza się parametr typu w klasie?
Podsumowanie
Nauczył(a) się Pan/Pani dodawać parametr typu, taki jak T, do własnych klas i metod. Dart uzupełnia go, często za pomocą wnioskowania, dzięki czemu kod pozostaje wielokrotnego użytku i bezpieczny. ✅
Często zadawane pytania
Czy lekcja „Klasy i metody generyczne” jest bezpłatna?
Tak — pełny tekst „Klasy i metody generyczne” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Dart Academy, przejdź na CoddyKit PRO. Kurs Dart Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Klasy i metody generyczne”?
Parametryzowanie własnych typów Ćwiczysz Dart Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Dart Academy?
Nie wymagamy żadnego doświadczenia. Dart Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Klasy i metody generyczne”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Dart Academy?
Tak. Każda lekcja Dart Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Dlaczego generyki przewyższają dynamic
- Klasy i metody generyczne
- Ograniczone parametry typów z extends
- Kolekcje generyczne w praktyce