Руководство по Java metanit com Данный раздел посвящен языку программирования Java и всем сопутствующим



Download 1,75 Mb.
Pdf ko'rish
bet26/110
Sana23.02.2022
Hajmi1,75 Mb.
#177154
TuriРуководство
1   ...   22   23   24   25   26   27   28   29   ...   110
Bog'liq
2 5305247065486395003

Обобщенные типы и методы
Нередко создаваемые разработчиками алгоритмы могут быть успешно использованы для
разных типов данных без какого-либо изменения. И чтобы не создавать одну и туже реализацию
для каждого типа данных в языке Java были введены обобщения или обобщенные типы.
Обобщенные типы позволяют создавать более безопасный и при этом универсальный код.
Но прежде чем перейти к рассмотрению обобщенных типов, посмотрим на проблему,
которая могла возникнуть до их появления:
int x = 44;
String s = "hello";
java.util.ArrayList array = new java.util.ArrayList();
// Упаковка значения x в тип Object
array.add(x);
// Упаковка значения s в тип Object
array.add(s);
// Распаковка в значение типа int первого элемента коллекции
int y = (int)array.get(0);
System.out.println(y);
В данном случае используется класс ArrayList из пакета java.util, который представляет
коллекцию объектов. Чтобы поместить объект в коллекцию, применяется метод add. И хотя мы
добавляем в коллекцию числа и строки, но по существу ArrayList содержит коллекцию значений
типа Object. Таким образом, в вызовах array.add(x); и array.add(s); значения переменных x и s
вначале "упаковываются" в значения типа Object, потом при получении элементов из коллекции -
наоборот, "распаковываются" в нужный тип. Упаковка и распаковка (boxing и unboxing) ведут к
снижению
производительности,
поскольку
система
должна
выполнить
необходимые
преобразования.
Существует и другая проблема, связанная с упаковкой-распаковкой, - проблема
безопасности типов. Например, во время выполнения следующего кода мы получим ошибку:
int y = (int)array.get(1);
Все эти проблемы призваны решить обобщенные типы. Обобщенные типы позволяют
указать конкретный тип данных, который будет использоваться. Например, используем
обобщенный вариант класса ArrayList:
int x = 44;
String s = "hello";
java.util.ArrayList array = new java.util.ArrayList();
array.Add(x);
// Распаковка уже не нужна
int y = array[0];
// здесь будет ошибка, так как можно добавлять только объекты int
array.Add(s);
Так как в данном случае мы использовали обобщенную версию класса ArrayList, то нам
нужно задать в выражении <тип> тип данных, для которого этот класс будет применяться. Далее
мы добавляем число и строку в коллекцию. Но если число будет добавлено в коллекцию array,
так как коллекция типизирована типом int, то на строке array.Add(s); мы получим ошибку во
время компиляции и должны будем удалить эту строку. Таким образом, при применении
обобщенного варианта класса снижается как количество потенциальных ошибок, так и время на
выполнение.
При создании объекта обобщенного типа с помощью конструктора в последних версиях Java
второй раз тип можно не указывать, например:
java.util.ArrayList array = new
java.util.ArrayList<>();
Теперь создадим и используем свой обобщенный класс Bank:


public class GenericsApp {
public static void main(String[] args) {
Bank bank = new Bank(new Integer[] { 1, 2, 4, 5, 6 });
Bank bank2 = new Bank(new String[] {"13433", "342454", "21432"});
}
}
class Bank{
T[] clients;
public Bank()
{
}
public Bank(T[] _clients)
{
this.clients = _clients;
}
}
С помощью буквы T в определении класса class Bank мы указываем, что данный тип T
будет использоваться этим классом. Параметр T в угловых скобках называется универсальным

Download 1,75 Mb.

Do'stlaringiz bilan baham:
1   ...   22   23   24   25   26   27   28   29   ...   110




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish