Articles

Jak korzystać z klasy w Javie?

wiemy tylko, że ” wszystkie instancje klasy any mają tę samą Javę.lang.Obiekt klasy tego typu klasy ”

np.)

Student a = new Student();Student b = new Student();

następniea.getClass() == b.getClass() jest prawdą.

Załóżmy teraz

Teacher t = new Teacher();

bez generyków poniżej jest możliwe.

Class studentClassRef = t.getClass();

ale teraz jest źle ..?

e.G)public void printStudentClassInfo(Class studentClassRef) {} można wywołać za pomocąTeacher.class

można tego uniknąć za pomocą leków generycznych.,

Class<Student> studentClassRef = t.getClass(); //Compilation error.

czym jest T ?? T to parametry typu (zwane również zmiennymi typu); rozdzielone nawiasami kątowymi (<>), następuje po nazwie klasy.
T jest tylko symbolem, podobnie jak nazwa zmiennej (może być dowolną nazwą) zadeklarowana podczas zapisu pliku klasy. Później T zostanie zastąpione
poprawną nazwą klasy podczas inicjalizacji (HashMap<String> map = new HashMap<String>();)

np.) class name<T1, T2, ..., Tn>

tak więc Class<T> reprezentuje obiekt klasy określonego typu”T„.,

Załóżmy, że metody klasy muszą pracować z nieznanymi parametrami typu, jak poniżej

Tutaj T może być używany jako String wpisz jako CarName

lub T może być używany jako Integer wpisz jako modelNumber,

lub T może być używany jako Object wpisz jako poprawną instancję samochodu.

teraz tutaj powyższe jest proste POJO, które może być używane inaczej w czasie wykonywania.
Kolekcje np. List, Set, Hashmap są najlepszymi przykładami, które będą działać z różnymi obiektami zgodnie z deklaracją T, ale po zadeklarowaniu T jako String
e.,g)HashMap<String> map = new HashMap<String>(); wtedy będzie akceptował tylko obiekty instancji klasy String.

metody generyczne

metody generyczne to metody, które wprowadzają własne parametry typu. Jest to podobne do deklarowania typu ogólnego, ale zakres parametru type jest ograniczony do metody, w której jest zadeklarowany. Dozwolone są statyczne i niestatyczne metody generyczne, jak również konstruktory klas generycznych.

składnia metody generycznej zawiera parametr type w nawiasach kątowych i pojawia się przed typem zwracanym przez metodę., W przypadku metod generycznych sekcja parametru type musi pojawić się przed typem zwracanym przez metodę.

tutaj<K, V, Z, Y> jest deklaracją typów używanych w argumentach metody, które powinny być przed typem zwracanymboolean tutaj.

w poniższej deklaracji typu<T> nie jest wymagana na poziomie metody, ponieważ jest już zadeklarowana na poziomie klasy.

class MyClass<T> { private T myMethod(T a){ return a; }}

ale poniżej jest źle, ponieważ parametry typu klasy K, V, Z I Y nie mogą być używane w kontekście statycznym(metoda statyczna tutaj).,

Inne ważne scenariusze to

i wreszcie statyczna metoda zawsze wymaga jawnej deklaracji<T>; nie będzie wynikać z poziomu klasyClass<T>. Jest to spowodowane tym, że poziom Klasy T jest związany z instancją.

przeczytaj również ograniczenia dotyczące generyków

symbole wieloznaczne i podtypy

wpisz argument dla metody generycznej