Java руководство для начинающих - Шилдт Герберт (2012)
-
Год:2012
-
Название:Java руководство для начинающих
-
Автор:
-
Жанр:
-
Оригинал:Английский
-
Язык:Русский
-
Издательство:Вильямс
-
Страниц:316
-
ISBN:978-5-8459-1770-6
-
Рейтинг:
-
Ваша оценка:
Java руководство для начинающих - Шилдт Герберт читать онлайн бесплатно полную версию книги
System.out.println(exc);
}
System.out.println();
try {
for(int i=0; i < 5; i++) {
System.out.print("Getting next Double from q2: ");
dVal = q2.get ();
System.out.println(dVal);
}
}
catch (QueueEmptyException exc) {
System.out.println(exc);
}
}
}
Скомпилируйте программу и запустите ее на выполнение. В итоге на экране отобразится следующий результат:
```
Demonstrate a queue of Integers.
Adding 0 to the q.
Adding 1 to the q.
Adding 2 to the q.
Adding 3 to the q.
Adding 4 to the q.
Getting next Integer from q: 0
Getting next Integer from q: 1
Getting next Integer from q: 2
Getting next Integer from q: 3
Getting next Integer from q: 4
Demonstrate a queue of Doubles.
Adding 0.0 to the q2.
Adding 0.5 to the q2.
Adding 1.0 to the q2.
Adding 1.5 to the q2.
Adding 2.0 to the q2.
Getting next Double from q2: 0.0
Getting next Double from q2: 0.5
Getting next Double from q2: 1.0
Getting next Double from q2: 1.5
Getting next Double from q2: 2.0
Попытайтесь самостоятельно сделать обобщенными классы CircularQueue и
DynQueue, созданные в примере для опробования 8.1.
## Базовые типы и устаревший код
Обобщенные типы появились лишь в версии JDK 5, поэтому в Java нужно было принять меры для обеспечения совместимости с созданным ранее и впоследствии устаревшим кодом. Короче говоря, устаревший код нужно было оставить вполне работоспособным и совместимым с обобщениями. А это означало, что устаревший код должен был нормально взаимодействовать с обобщениями, и наоборот.
Для обеспечения перехода к обобщенным типам в Java предусмотрена возможность создания обобщенных классов, используемых без указания аргументов типа. Это подразумевает создание для класса базового типа, иногда еще называемого сырым. Такой тип совместим с устаревшим кодом, в котором ничего не известно об обобщенных классах. Единственный недостаток базового типа заключается в том, что при его использовании теряются преимущества типовой безопасности, присущие обобщениям.
Ниже приведен пример программы, демонстрирующий применение базового типа.
// Применение базового типа,
class Gen {
Т ob; // объявить объект типа Т
// передать конструктору ссылку на объект типа Т
Gen(Т о) {
ob = о;
}
// возвратить объект ob
Т getob() {
return ob;
}
}
// продемонстрировать использование базового типа
class RawDemo {
public static void main(String args[]) {
// создать объект класса Gen для типа Integer
Gen<Integer> iOb = new Gen<Integer>(88);
// создать объект класса Gen для типа String
Gen<String> strOb = new Gen<String>("Generics Test");
// создать объект класса Gen для базового типа
// и передать ему значение типа Double
// Если аргумент типа не передается, создается базовый тип.
Gen raw = new Gen(new Double(98.6));
// Здесь требуется приведение типов, так как тип неизвестен,
double d = (Double) raw.getob();
System.out.println("value: " + d);
// Использование базового типа может привести
//к исключениям при выполнении программы.
// Ниже представлен ряд тому примеров.
// Следующее приведение типов вызывает ошибку
// при выполнении программы!
// int i = (Integer) raw.getob();
// Следукяцее присваивание чревато ошибкой.
// Базовые типы отменяют типовую безопасность.
strOb = raw; // Допустимо, но потенциально ошибочно.
// String str = strOb.getob(); // Ошибка при выполнении программы.