"Още една готина тема."
"Изненадите продължават да идват! Имам ли рожден ден?"
"Днес ще ви разкажа за генериците. Генериците са типове, които имат параметър. В Java контейнерните класове ви позволяват да посочите типа на техните вътрешни обекти."
„Когато декларираме обща променлива, ние посочваме два типа instead of един: типа на променливата и типа на данните, които съхранява.“
„ArrayList е добър пример. Когато създаваме нов обект ArrayList, е удобно да посочим типа на стойностите, които ще се съхраняват в този списък.“
Код | Обяснение |
---|---|
|
Създайте променлива ArrayList, наречена list . Присвоете му обект ArrayList. Този списък може да съхранява само String обекти. |
|
Създайте променлива ArrayList, наречена list . Присвоете му обект ArrayList. Този списък може да съхранява всяHowви стойности . |
|
Създайте променлива ArrayList, наречена list . Присвоете му обект ArrayList. Този списък може да съхранява само стойности Integer и int . |
„Звучи супер интересно. Особено частта за съхраняване на стойности от всяHowъв тип .“
„Изглежда, че това е нещо добро. В действителност, ако поставим низове в ArrayList в един метод и след това очакваме да съдържа числа в друг метод, програмата ще се срине (прекратява с грешка).“
"Виждам."
„Засега няма да създаваме наши собствени класове с параметри на типа. Просто ще използваме съществуващите.“
„Може ли всеки клас да бъде тип параметър, дори този, който пиша?“
"Да. Всеки тип с изключение на примитивните типове. Всички параметри на типа трябва да наследяват от класа Object."
" Искате да кажете, че не мога да напиша ArrayList<int>? "
„Наистина не можете. Но разработчиците на Java са написали обвиващи класове за всеки от примитивните типове. Тези класове наследяват Object . Ето How изглежда:“
Примитивен тип | Клас | списък |
---|---|---|
вътр | Цяло число | ArrayList< Цяло число > |
двойно | Двойна | ArrayList< Double > |
булево | Булева стойност | ArrayList< Boolean > |
въглен | Характер | ArrayList< символ > |
byte | Байт | ArrayList< byte > |
„Можете лесно да присвоите примитивни класове и техните аналози (обвиващи класове) един към друг:“
Примери |
---|
|
|
|
|
|
„Страхотно. Мисля, че ще се опитам да използвам ArrayList по-често.“
GO TO FULL VERSION