Java руководство для начинающих - Шилдт Герберт (2012)
-
Год:2012
-
Название:Java руководство для начинающих
-
Автор:
-
Жанр:
-
Оригинал:Английский
-
Язык:Русский
-
Издательство:Вильямс
-
Страниц:316
-
ISBN:978-5-8459-1770-6
-
Рейтинг:
-
Ваша оценка:
Java руководство для начинающих - Шилдт Герберт читать онлайн бесплатно полную версию книги
// Запуск имитации автоматизированного светофора,
public void run() {
while(!stop) {
try {
switch(tic) {
case GREEN:
Thread.sleep(10000); // Зеленый на 10 секунд
break;
case YELLOW:
Thread.sleep(2000); // Желтый на 2 секунды
break;
case RED:
Thread.sleep(12000); // Красный на 12 секунд
break;
}
} catch(InterruptedException exc) {
System.out.println(exc);
}
changeColor() ;
}
}
// Переключение цвета светофора,
synchronized void changeColor() {
switch(tic) {
case RED:
tic = TrafficLightColor.GREEN;
break;
case YELLOW:
tic = TrafficLightColor.RED;
break;
case GREEN:
tic = TrafficLightColor.YELLOW;
}
changed = true;
notify(); // уведомить о переключении цвета светофора
}
// Ожидание переключения цвета светофора.
synchronized void waitForChange() {
try {
while(!changed)
wait(); // ожидать переключения цвета светофора
changed = false;
} catch(InterruptedException exc) {
System.out.println(exc);
}
}
// Возврат текущего цвета.
TrafficLightColor getColor() {
return tic;
}
// Прекращение имитации светофора,
void cancel() {
stop = true;
}
}
class TrafficLightDemo {
public static void main(String args[]) {
TrafficLightSimulator tl =
new TrafficLightSimulator(TrafficLightColor.GREEN);
for (int i=0; i < 9; i++) {
System.out.println(tl.getColor());
tl.waitForChange();
}
tl.cancel();
}
}
При выполнении этой программы на экран выводится приведенный ниже результат. Как видите, цвета светофора переключаются в требуемой очередности: зеленый, желтый, красный.
GREEN
YELLOW
RED
GREEN
YELLOW
RED
GREEN
YELLOW
RED
Обратите внимание на то, что перечисление позволяет сделать исходный код данной программы более структурированным. Светофор может находиться в одном из трех состояний, и для этой цели в перечислении предусмотрены только три константы. Благодаря этому исключается случайное переключение имитируемого светофора в недопустимое состояние.
Используя тот факт, что перечисления реализуются в виде классов, можете усовершенствовать рассмотренную здесь программу. Соответствующее задание будет предложено в упражнении для самопроверки по материалу этой главы в самом ее конце.
Автоупаковка
В версии JDK 5 были реализованы два очень важных языковых средства, недостаток которых долгое время ощущали программирующие на Java. Речь идет об автоупаковке и автораспаковке, существенно упрощающих и ускоряющих создание кода, в котором приходится преобразовывать простые типы данных в объекты, и наоборот. А поскольку такие потребности возникают в программах довольно часто, то появление автоупаковки и автораспаковки положительно сказалось на работе практически всех программирующих на Java. Как будет показано в главе 13, автоупаковка и автораспаковка способствовали практическому применению обобщений — еще одного языкового средства, реализованного в Java.
Автоупаковка и автораспаковка непосредственно связаны с оболочками типов и способами внедрения и извлечения значений из экземпляров оболочек. Поэтому рассмотрим сначала оболочки типов и способы упаковки и распаковки Значений вручную.
Оболочки типов
Как вам должно быть уже известно, в Java предусмотрены простые типы данных, в том числе int и double. Простые типы позволяют добиться более высокой эффективности вычислений по сравнению с объектами. Но простые типы не являются частью иерархии объектов и не наследуют свойства и методы класса Object.