Rozważ przykład, w którym musisz sporządzić listę żywych istot w okolicy. Nie ma znaczenia, czy jest to człowiek, zwierzę czy roślina. Liczy się tylko żywa istota. W takim przypadku zgrupowałbyś je wszystkie jako „Żywe rzeczy” i nie klasyfikowałbyś ich. Podobnie, gdy musisz przechowywać pewne dane, liczy się dla Ciebie zawartość, a nie typ danych, i właśnie tam używasz Generics. Generics w to funkcja języka, która umożliwia użycie typów i metod ogólnych.
Poniżej lista tematów, które będę poruszać w tym artykule:
- Co to są generyczne w Javie?
- Dlaczego Java Generics?
- Typy generyczne języka Java
- Zalety generyków w Javie
Co to są generyczne w Javie?
Generics to termin oznaczający zestaw funkcji językowych związanych z definicją i używaniem typów i metod rodzajowych. Metody ogólne w języku Java różnią się od zwykłych typów danych i metod. Przed Generics używaliśmy do przechowywania wszelkiego rodzaju przedmiotów np. nieogólne . Teraz Generics wymusza programista do przechowywania określonego typu obiektów.
Teraz, gdy już wiesz, czym są typy ogólne w Javie, przejdźmy dalej i zrozummy, dlaczego potrzebujesz Java Generics.
Dlaczego Java Generics?
Jeśli spojrzysz na klas, wtedy zauważysz, że większość klas przyjmuje parametr / argument typu Object. Zasadniczo w tej formie mogą przyjąć dowolny typ Java jako argument i zwrócić ten sam obiekt lub argument. W istocie są heterogeniczny tj. nie jest podobnego typu.
Czasami w aplikacji Java typ danych wejściowych nie jest ustalony. Wejście może być plikiem liczba całkowita , do pływak lub . Aby przypisać wejście do odpowiedniego typu danych, należało przeprowadzić wstępne kontrole. W tradycyjnym podejściu po przyjęciu danych wejściowych sprawdzano typ danych wejściowych, a następnie przypisywano go do zmiennej o odpowiednim typie danych. Kiedy zastosowano tę logikę, długość kodu i czas wykonania zostały zwiększone. Uniknąć tego, Wprowadzono leki generyczne . W przypadku korzystania z opcji Generics parametry w kodzie są automatycznie sprawdzane w czasie kompilacji i domyślnie ustawia typ danych. W tym miejscu potrzebujesz koncepcji typów ogólnych w Javie.
Teraz, gdy masz już trochę informacji na temat typów generycznych, przejdźmy dalej i przyjrzyjmy się różnym sposobomDo kodu źródłowego można zastosować typy generyczne.
Typy generyczne języka Java
Istnieją 4 różne sposoby zastosowania typów generycznych w Javie i są one następujące:
- Klasa typu ogólnego
- Ogólny interfejs
- Metoda ogólna
- Konstruktor ogólny
Zobaczmy teraz, jak można szczegółowo zastosować typy ogólne do klas typów.
1. Klasa typów ogólnych
O klasie mówi się, że jest ogólna, jeśli deklaruje jedną lub więcej zmiennych typu. Te typy zmiennych są znane jako parametry typu . Zrozummy to na przykładzie. W poniższym przykładzie utworzę klasę z jedną właściwością x a typem własności jest obiekt.
class Genericclass {private Object x public void set (Object x) {this.x = x} public Object get () {return x}}
Tutaj, po zainicjowaniu klasy z określonym typem, klasa powinna być używana tylko z tym konkretnym typem. Na przykład. Jeśli chcesz, aby jedna instancja klasy zawierała wartość x typu „ Strunowy ', To programista powinien ustawić i otrzymać jedyne rodzaj. Ponieważ zadeklarowałem typ właściwości Object, nie ma możliwości wymuszenia tego ograniczenia. Programista może ustawić dowolny obiekt i może oczekiwać dowolnego typu wartości zwracanej od pobierz metodę ponieważ wszystkie typy Java są podtypami klasa.
Aby wymusić tego rodzaju ograniczenie, możemy użyć typów ogólnych, jak poniżej:
class Genericclass {// T oznacza „Type” private T x public void set (T x) {this.x = x} public T get () {return x}}
Teraz możesz mieć pewność, że klasa nie zostanie niewłaściwie użyta z niewłaściwymi typami. Prosty przykład' Genericclass ”Wygląda jak poniżej:
sortuj tablicę c ++ rosnąco
Genericclass instance = new Genericclass () instance.set ('Edureka') instance.set (10) // Spowoduje to zgłoszenie błędu czasu kompilacji
Więc tak to działa. Toanalogia dotyczy również interfejsu. Spójrzmy szybko na przykład, aby zrozumieć, w jaki sposób informacje o typach ogólnych mogą być używane w interfejsach w Javie.
2. Interfejs ogólny
Na odnosi się do abstrakcyjnych typów danych. Pozwalają manipulować niezależnie od szczegółów ich reprezentacji. Tworzą także hierarchię w Języki. Zobaczmy, jak można zastosować typ ogólny do interfejsów w Javie.
// Interfejs definicji ogólnego interfejsu GenericInterface {T2 PerformExecution (T1 x) T1 ReverseExecution (T2 x)} // Klasa implementująca ogólny interfejs klasy Genericclass implementuje GenericInterface {public Integer PerformExecution (String x) {// kod wykonania} public String ReverseExecution ( Integer x) {// kod wykonania}}
Mam nadzieję, że udało Ci się zrozumieć, w jaki sposób typy generyczne można zastosować do klas typów i interfejsów. Teraz zagłębmy się w ten artykuł i zrozummy, w jaki sposób jest pomocny w przypadku metod i konstruktorów.
3. Metody ogólne
Metody ogólne są bardzo podobne do klas ogólnych. Różnią się od siebie tylko jednym aspektem: informacje o zakresie lub typie znajdują się tylko w metodzie. Metody ogólne wprowadzają własne parametry typu.
Zrozummy to na przykładzie. Poniżej znajduje się przykład metody ogólnej, której można użyć do znalezienia wszystkich wystąpień parametrów typu na liście zmiennych.
public static int countAllOccurrences (T [] list, element T) {int count = 0 if (element == null) {for (T listElement: list) if (listElement == null) count ++} else {for (T listElement: list ) if (element.equals (listElement)) count ++} return count}
Jeśli przejdziesz listę Ciąg do wyszukania w tej metodzie, zadziała dobrze. Ale jeśli spróbujesz znaleźć liczbę na liście ciągów, spowoduje to błąd czasu kompilacji.
Ta analogia jest również podobna do konstruktora. Weźmy przykład dla konstruktora ogólnego i zrozummy, jak to działa.
4. Konstruktor ogólny
Dla budowniczego jest blokiem kodu, który inicjalizuje nowo utworzony obiekt. ZA budowniczy przypomina metodę instancji w J ava ale nie jest to metoda, ponieważ nie ma typu zwracanego. Konstruktor ma taką samą nazwę jak klasa i wygląda tak w języku J ava kod. A teraz weźmy przykład i zrozummy, jak to działa.
class Wymiar {prywatna długość T prywatna szerokość T prywatna wysokość T // Konstruktor generyczny public Dimension (długość T, szerokość T, wysokość T) {super () this.length = length this.width = width this.height = height}}
W powyższym przykładzie konstruktor klasy Dimension zawiera informacje o typie. Możesz więc mieć wystąpienie wymiaru ze wszystkimi atrybutami tylko jednego typu. W ten sposób można używać konstruktorów typów ogólnych. Mam nadzieję, że zrozumiałeś typy generyków w Javie.
Przejdźmy teraz dalej i przyjrzyjmy się zaletom generycznych w Javie.
Zalety generyków w Javie
1. Ponowne wykorzystanie kodu
Możesz skomponować strategię, klasę lub plik raz i używaj do dowolnego typu lub w dowolny sposób, którego potrzebujesz.
2. Przesyłanie poszczególnych typów nie jest wymagane
Zasadniczo odzyskałeś informacje z za każdym razem musisz go wpisać na maszynie. Typowanie przy każdym zadaniu regeneracyjnym to poważna migrena. Aby wyeliminować to podejście, wprowadzono leki generyczne.
3. Implementacja nieogólnego algorytmu
Może obliczyć algorytmy, które działają na różnych rodzajach elementów, które są również bezpieczne dla typu.
jak wydrukować dziennik zatwierdzeń git
Chodziło o zalety Java Generics. W ten sposób dochodzimy do końca tego artykułu o produktach generycznych w Javie. Mam nadzieję, że znalazłeś to pouczające i pomogło ci w zrozumieniu Java Generics.
Sprawdź autorstwa Edureka, zaufanej firmy zajmującej się edukacją online, z siecią ponad 250 000 zadowolonych uczniów rozsianych po całym świecie. Jesteśmy tutaj, aby pomóc Ci na każdym etapie Twojej podróży, aby zostać oprócz tych pytań do rozmowy kwalifikacyjnej w języku Java, opracowaliśmy program nauczania przeznaczony dla studentów i profesjonalistów, którzy chcą zostać programistą Java. Kurs ma na celu zapewnienie przewagi w programowaniu w języku Java i przeszkolenie zarówno podstawowych, jak i zaawansowanych koncepcji języka Java, a także różnych struktur Java, takich jak Hibernate i Spring.
Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy w tym artykule „Generics in Java ”Artykuł a my skontaktujemy się z Tobą tak szybko, jak to możliwe.