Разделы презентаций


Нововведения Java5 Часть 2

Содержание

План лекцииФорматированные ввод и выводИзменения в структуре классов и пакетов

Слайды и текст этой презентации

Слайд 1Нововведения Java5 Часть 2
© Составление, Будаев Д.С., Гаврилов А.В., 2013
Лекция 12.1
УНЦ

«Инфоком»
Самара
2013

Нововведения Java5 Часть 2© Составление, Будаев Д.С., Гаврилов А.В., 2013Лекция 12.1УНЦ «Инфоком»Самара2013

Слайд 2План лекции
Форматированные ввод и вывод


Изменения в структуре классов и пакетов

План лекцииФорматированные ввод и выводИзменения в структуре классов и пакетов

Слайд 3Проблема

Имеется: Существуют классы для работы со строками, имеющие сходную функциональность, но

не имеющие общего предка

Хотелось бы: Ввести общего родителя в форме интерфейса

ПроблемаИмеется: Существуют классы для работы со строками, имеющие сходную функциональность, но не имеющие общего предкаХотелось бы: Ввести

Слайд 4java.lang.CharSequence
Это интерфейс
Предоставляет доступ к объекту, являющемуся последовательностью символов
Содержит методы:
char

charAt(int index)
int length()
CharSequence subSequence(int start, int end)
String

toString()
Реализующие классы:
java.lang.String
java.lang.StringBuffer
java.lang.StringBuilder
java.nio.CharBuffer
java.lang.CharSequenceЭто интерфейсПредоставляет доступ к объекту, являющемуся последовательностью символовСодержит методы: char charAt(int index) int length() CharSequence subSequence(int start,

Слайд 5java.lang.StringBuilder
Новый класс для работы со строками

По своим методам и цели

является копией класса java.lang.StringBuffer

Отличается только тем, что не является безопасным

с точки зрения многопоточности

Если объект изменяемой строки локален, то лучше использовать этот класс
java.lang.StringBuilderНовый класс для работы со строкамиПо своим методам и цели является копией класса java.lang.StringBufferОтличается только тем, что

Слайд 6java.lang.Appendable
Это интерфейс
Предоставляет доступ к объекту, позволяющему добавлять к себе символы

и их последовательности
Содержит методы:
Appendable append(char c)
Appendable append(CharSequence csq)

Appendable append(CharSequence csq, int start, int end)
Реализующие классы:
java.lang.StringBuffer
java.lang.StringBuilder
java.io.Writer
java.lang.AppendableЭто интерфейсПредоставляет доступ к объекту, позволяющему добавлять к себе символы и их последовательностиСодержит методы: Appendable append(char c)

Слайд 7java.lang.Readable
Это интерфейс
Предоставляет доступ к объекту, позволяющему считывать символы
Содержит методы:
int

read(CharBuffer cb)
Реализующие классы:
java.nio.CharBuffer
java.io.Reader

java.lang.ReadableЭто интерфейсПредоставляет доступ к объекту, позволяющему считывать символыСодержит методы: int read(CharBuffer cb)Реализующие классы: java.nio.CharBuffer java.io.Reader

Слайд 8Проблема
Имеется:



Хотелось бы:

System.out.println("length = " + l);
System.out.println("a=" + a + ";");
System.out.printf(

"length = %d\na=%f;", l, a);

ПроблемаИмеется:Хотелось бы:System.out.println(

Слайд 9Форматированные ввод и вывод

java.util.Formatter
Обеспечивает преобразования формата, позволяющие выводить числа, строки,

время и даты в практически любом нужном вам формате

java.util.Scanner
Позволяет использовать

форматированный ввод и преобразовывать значения к нужным типам

Форматированные ввод и выводjava.util.Formatter	Обеспечивает преобразования формата, позволяющие выводить числа, строки, время и даты в практически любом нужном

Слайд 10java.util.Formatter Конструкторы
Имеет множество конструкторов, позволяющих задать следующие параметры (либо, если они

не заданы, использовать значения по умолчанию)
Объект вывода
Appendable a
File file
String fileName
OutputStream

os
PrintStream ps
по умолчанию – без автоматического вывода
Кодовая таблица
String charSet
по умолчанию – текущая таблица
Параметры локализации
Locale locale
по умолчанию – текущие параметры
java.util.Formatter КонструкторыИмеет множество конструкторов, позволяющих задать следующие параметры (либо, если они не заданы, использовать значения по умолчанию)Объект

Слайд 11java.util.Formatter Важные методы
Formatter format(String fmtString,

Object ... args) Форматирует указанные аргументы в соответствии со

строкой форматирования


Formatter format(Locale loc, String fmtString, Object ... args)
Форматирует указанные аргументы в соответствии со строкой форматирования и указанной локализацией
java.util.Formatter Важные методыFormatter format(String fmtString,          Object ... args)

Слайд 12java.util.Formatter Важные методы
IOException ioException() Возвращает объект исключения, генерируемый объектом-приемником, иначе null

Appendable out() Возвращает

ссылку на объек-приемник выходных данных

Locale locale() Возвращает ссылку на объект локализации

java.util.Formatter Важные методыIOException ioException() Возвращает объект исключения, генерируемый объектом-приемником, иначе nullAppendable out() Возвращает ссылку на объек-приемник выходных

Слайд 13java.util.Formatter Важные методы
String toString() Возвращает объект типа String, содержащий отформатированный вывод

void flush() Переносит

информацию из буфера форматирования

void close() Закрывает объект форматировщика, освобождает ресурсы

java.util.Formatter Важные методыString toString() Возвращает объект типа String, содержащий отформатированный выводvoid flush() Переносит информацию из буфера форматированияvoid

Слайд 14Строка форматирования
Строка форматирования состоит из:
простых символов Просто копируются в вывод
спецификаторов формата Определяют

способ отображения аргументов
Спецификатор формата:
знак процента (%)
преобразующий спецификатор формата
Formatter fmt =

new Formatter();
fmt.format("Formatting %s is easy! %d %f",
"with Java", 15, 12.3);
Строка форматированияСтрока форматирования состоит из:простых символов Просто копируются в выводспецификаторов формата Определяют способ отображения аргументовСпецификатор формата:знак процента

Слайд 15Преобразующие спецификаторы формата

Преобразующие спецификаторы формата

Слайд 16Возможности форматирования
Порядковый номер аргумента Позволяет использовать не текущий аргумент, а заданный

Относительный

номер Позволяет несколько раз вывести одно и то же значение без

явной нумерации

fmt.format("%3$d %2$d %1$d", 1, 2, 3); // 3 2 1

Calendar c = Calendar.getInstance();
fmt.format("Today is day %te of %// Today is day 4 of December, 2006

Возможности форматированияПорядковый номер аргумента Позволяет использовать не текущий аргумент, а заданныйОтносительный номер Позволяет несколько раз вывести одно

Слайд 17Возможности форматирования
Управление регистром вывода


Сложное форматирование времени и даты



Задание минимальной ширины

поля

fmt.format("Some %s", "String"); //Some String
fmt.format("Some %S", "String"); //Some STRING
fmt.format("Now is

%tH:%fmt.format("Now is %tl:%// Now is 20:03 of 04.10.09
// Now is 8:03pm of 4 October 2009

fmt.format("%3s %3s %3s %3s ", "1", "22", "333", "4444");
// 1 22 333 4444

Возможности форматированияУправление регистром выводаСложное форматирование времени и датыЗадание минимальной ширины поляfmt.format(

Слайд 18Возможности форматирования
Задание точности вывода для вещественных значений


Выравнивание вывода


Разделение групп цифр

и т.д.

fmt.format("%10.2f %10.8f", Math.PI, Math.PI);
// 3.14 3.14159265
fmt.format("%-10.2f|%10.2f",

Math.PI, Math.PI);
// 3.14 | 3.14

fmt.format("%,d", Integer.MAX_VALUE);
// 2,147,483,647

Возможности форматированияЗадание точности вывода для вещественных значенийВыравнивание выводаРазделение групп цифр и т.д.fmt.format(

Слайд 19Метод printf()
Автоматически создает и использует экземпляр класса Formatter

Объявлен в классах:

java.io.PrintWriter
java.io.PrintStream

Имеет такие же параметры, что и метод Formatter.format()

Метод printf()Автоматически создает и использует экземпляр класса FormatterОбъявлен в классах: java.io.PrintWriter java.io.PrintStreamИмеет такие же параметры, что и

Слайд 20java.util.Scanner Конструкторы
Задают один из возможных источников данных

С указанием кодовой таблицы и

без
File
InputStream
java.nio.channels.ReadableByteChannel

Используя Unicode
Readable
String

java.util.Scanner КонструкторыЗадают один из возможных источников данныхС указанием кодовой таблицы и безFileInputStreamjava.nio.channels.ReadableByteChannelИспользуя UnicodeReadableString

Слайд 21java.util.Scanner Использование
Считывает лексемы из указанного источника
Лексема – обособленная посредством разделителей порция

входных данных, определяемая регулярным выражением, задающим формат ввода
Разделители можно настроить
Шаблон

регулярного выражения можно задать собственный
Существуют готовые методы для базовых типов данных
java.util.Scanner ИспользованиеСчитывает лексемы из указанного источникаЛексема – обособленная посредством разделителей порция входных данных, определяемая регулярным выражением, задающим

Слайд 22java.util.Scanner Важные методы
boolean hasNextType(...)
Возвращает true, если доступна следующая лексема указанного типа,

иначе false
boolean hasNext()
boolean hasNext(java.util.regex.Pattern

pattern)
boolean hasNext(String pattern)
boolean hasNextByte()
boolean hasNextBigInteger()
...
java.util.Scanner Важные методыboolean hasNextType(...)	Возвращает true, если доступна следующая лексема указанного типа, иначе falseboolean hasNext()boolean hasNext(java.util.regex.Pattern

Слайд 23java.util.Scanner Важные методы
Type nextType(...)
Возвращает значение следующей лексемы. Выбрасывает java.util.NoSuchElementException
String next()
String next(Pattern

pattern)
String next(String pattern)
int nextInt()
double nextDouble()
...

java.util.Scanner Важные методыType nextType(...)	Возвращает значение следующей лексемы. Выбрасывает java.util.NoSuchElementExceptionString next()String next(Pattern pattern)String next(String pattern)int nextInt()double nextDouble()...

Слайд 24java.util.Scanner Пример использования
Scanner in = new Scanner(System.in);
double sum = 0.0;
while (in.hasNext())

{
if (in.hasNextDouble())
sum += in.nextDouble();
else

if ((in.next()).equals("done"))
break;
else
return;
}
...
java.util.Scanner Пример использованияScanner in = new Scanner(System.in);double sum = 0.0;while (in.hasNext()) { if (in.hasNextDouble())  sum +=

Слайд 25Проблема
Имеется:




Хотелось бы:

List l = new LinkedList();
l.add(5);
Object I = l.get(0);
int i

= 0;
if (I instanceof Integer)
i = (Integer)I;
List l =

new LinkedList();
l.add(5);
int i = l.get(0);
ПроблемаИмеется:Хотелось бы:List l = new LinkedList();l.add(5);Object I = l.get(0);int i = 0;if (I instanceof Integer) i =

Слайд 26Обновленные коллекции
Все интерфейсы коллекций стали параметризованными
Включая итераторы!
Все классы коллекций стали

параметризованными
Обновился класс java.util.Collections
Прежние методы модифицированы для работы с параметризованными типами
Появились

новые методы
Появился новый тип оболочек (Checked), динамически обеспечивающих безопасность типов при работе с коллекцией
Обновленные коллекцииВсе интерфейсы коллекций стали параметризованнымиВключая итераторы!Все классы коллекций стали параметризованнымиОбновился класс java.util.CollectionsПрежние методы модифицированы для работы

Слайд 27Проблема
Имеется:



Хотелось бы:

public Circle createAnotherLikeThis(Circle circle) throws Throwable {
Class cls

= circle.getClass();
Class[] types = {Double.TYPE};
Constructor constr = cls.getConstructor(types);

Object[] args = {circle.getR()};
return (Circle) constr.newInstance(args);
}

public Circle createAnotherLikeThat(Circle circle) throws Throwable {
Class cls = circle.getClass();
Constructor constr = cls.getConstructor(Double.TYPE);
return constr.newInstance(circle.getR());
}

ПроблемаИмеется:Хотелось бы:public Circle createAnotherLikeThis(Circle circle) throws Throwable { Class cls = circle.getClass(); Class[] types = {Double.TYPE}; Constructor

Слайд 28Обновленная рефлексия
Классы Class, Constructor теперь настраиваемые
Допускается использование аргументов переменной длины
Добавлен

интерфейс аннотированного элемента java.lang.reflect.AnnotatedElement
Этот интерфейс реализуются всеми классами, объекты которых

представляют элементы, способные иметь аннотации
Методы интерфейса позволяют проверить наличие аннотации и получить объект аннотации
Обновленная рефлексияКлассы Class, Constructor теперь настраиваемыеДопускается использование аргументов переменной длиныДобавлен интерфейс аннотированного элемента java.lang.reflect.AnnotatedElementЭтот интерфейс реализуются всеми

Слайд 29Пример использования аннотаций
import java.lang.annotation.*;
import java.lang.reflect.*;

@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation { String str(); int

val(); }

class Meta {
@MyAnnotation(str = "Two parameters", val =

19)
public static void myMeth(String str, int i) {
try {
Class c = Class.forName("Meta");
Method m = c.getMethod("myMeth", String.class, int.class);
MyAnnotation a = m.getAnnotation(MyAnnotation.class);
System.out.printf("%s %d", a.str(), a.val());
}
catch (Exception c) {/*Обработка*/};
}
public static void main(String[] args) {
myMeth("test", 10);
}
}
Пример использования аннотацийimport java.lang.annotation.*;import java.lang.reflect.*;@Retention(RetentionPolicy.RUNTIME)@interface MyAnnotation { String str(); int val(); }class Meta { @MyAnnotation(str =

Слайд 30Проблема
Имеется:
Заложенные в языке средства синхронизации и взаимодействия потоков инструкций универсальные,

но низкоуровневые
Организация взаимодействия потоков часто требует значительных усилий при написании

кода

Хотелось бы:
Высокоуровневый инструментарий
Готовые решения для часто встречающихся ситуаций
ПроблемаИмеется:Заложенные в языке средства синхронизации и взаимодействия потоков инструкций универсальные, но низкоуровневыеОрганизация взаимодействия потоков часто требует значительных

Слайд 31java.util.concurrent
Пакет содержит высокоуровневый инструментарий для многопоточных приложений
Пакет содержит следующие категории

инструментов
Executors – средства запуска потоков
Synchronizers – средства синхронизации работы потоков
Timing

– вспомогательные средства контроля времени
Concurrent structures – структуры, корректно работающие в многопоточных приложениях (без блокировки всей структуры)
java.util.concurrentПакет содержит высокоуровневый инструментарий для многопоточных приложенийПакет содержит следующие категории инструментовExecutors – средства запуска потоковSynchronizers – средства

Слайд 32java.util.concurrent
java.util.concurrent.atomic пакет содержит классы оберток для базовых типов, обеспечивающие корректный доступ

к значениям в многопоточных приложениях

java.util.concurrent.locks пакет содержит высокоуровневые средства работы с

блокировками и критическими секциями
java.util.concurrentjava.util.concurrent.atomic пакет содержит классы оберток для базовых типов, обеспечивающие корректный доступ к значениям в многопоточных приложенияхjava.util.concurrent.locks пакет

Слайд 33Изменения в пакете java.lang
Добавлены новые подпакеты
java.lang.annotation
java.lang.instrument
java.lang.management
Добавлены новые классы
Enum
ProcessBuilder
StringBuilder
Добавлены новые интерфейсы
Appendable
Iterable
Readable
Изменения

в классах и интерфейсах
Math
String
StringBuffer
Comparable
И т.д.

Изменения в пакете java.langДобавлены новые подпакетыjava.lang.annotationjava.lang.instrumentjava.lang.managementДобавлены новые классыEnumProcessBuilderStringBuilderДобавлены новые интерфейсыAppendableIterableReadableИзменения в классах и интерфейсахMathStringStringBufferComparableИ т.д.

Слайд 34Изменения в пакете java.util
Модифицированные коллекции

Появление классов форматированного ввода/вывода

Появление подпакета java.util.concurrent

и его подпакетов

Изменения в пакете java.utilМодифицированные коллекцииПоявление классов форматированного ввода/выводаПоявление подпакета java.util.concurrent и его подпакетов

Слайд 35Нововведения Java7
© Составление, Будаев Д.С., Гаврилов А.В., 2013
Лекция 12.2
УНЦ «Инфоком»
Самара
2013

Нововведения Java7© Составление, Будаев Д.С., Гаврилов А.В., 2013Лекция 12.2УНЦ «Инфоком»Самара2013

Слайд 36План лекции
Бинарные литералы
Разделители в числовых литералах
Строки в предложениях switch
Вывод типа
Блок

try с ресурсами
Отлов исключений нескольких типов

План лекцииБинарные литералыРазделители в числовых литералахСтроки в предложениях switchВывод типаБлок try с ресурсамиОтлов исключений нескольких типов

Слайд 37Проблема
Имеется:




Хотелось бы:

int m1 = 130816;
int m2 = 0377;
int m3 =

0x780;
// Что это за числа???
int m1 = 0b11111111100000000;
int m2

= 0b00000000011111111;
int m3 = 0B00000011110000000;
ПроблемаИмеется:Хотелось бы:int m1 = 130816;int m2 = 0377;int m3 = 0x780;// Что это за числа???int m1 =

Слайд 38Бинарные литералы
Префиксы
0b
0B
Полезны при работе с битовыми представлениями чисел, поскольку позволяют

лучше видеть:
саму структуру числа 0b0000111111110000 // 2040, 0x07f8
взаимосвязь чисел 0b0000111111111111 // 4095,

0x0fff 0b1111000000000000 // 61440, 0xf000
Бинарные литералыПрефиксы0b0BПолезны при работе с битовыми представлениями чисел, поскольку позволяют лучше видеть:саму структуру числа 0b0000111111110000 // 2040,

Слайд 39Проблема
Имеется:




Хотелось бы:

double v1 = 7583432455435.324521;

double v2 = 532453245.3453425235;

// А это

сколько, много или мало???
double v1 = 7_583_432_455_435.324_521;

double v2 = 532_453_245.345_342_523_52;

ПроблемаИмеется:Хотелось бы:double v1 = 7583432455435.324521;double v2 = 532453245.3453425235;// А это сколько, много или мало???double v1 = 7_583_432_455_435.324_521;double

Слайд 40Подчеркивание в числовых литералах
Можно использовать
В литералах любых числовых типов 765_324_213_434L
В литералах

в любых системах счисления 0xFF_00_FF_00
В нужных местах числа 1_23_456_7890
В нужном количестве 6_____6

Подчеркивание  в числовых литералахМожно использоватьВ литералах любых числовых типов 765_324_213_434LВ литералах в любых системах счисления 0xFF_00_FF_00В

Слайд 41Подчеркивание в числовых литералах
Нельзя использовать
В начале и в конце числа _123 123_
Рядом

с разделителем целой и дробной части 10_.01 10._01
Перед суффиксами L, F и

D 1_L 1.1_F 1.1_D
В строковых литералах с числами "6_____6"
Подчеркивание  в числовых литералахНельзя использоватьВ начале и в конце числа _123		123_Рядом с разделителем целой и дробной

Слайд 42Проблема
Имеется:
public static Gender convert(String s) {
Gender g;

if (s.equals("м") || s.equals("муж") ||
s.equals("муж.") ||

s.equals("мужской")) {
g = Gender.Male;
} else if (s.equals("ж") || s.equals("жен") ||
s.equals("жен.") || s.equals("женский")) {
g = Gender.Female;
} else {
g = Gender.Unknown;
}
return g;
}
ПроблемаИмеется:public static Gender convert(String s) {  Gender g;  if (s.equals(

Слайд 43Проблема
Хотелось бы:
public static Gender convert(String s) {
Gender g;

switch (s) {
case "м": case

"муж": case "муж.": case "мужской":
g = Gender.Male; break;
case "ж": case "жен": case "жен.": case "женский":
g = Gender.Female; break;
default:
g = Gender.Unknown; break;
}
return g;
}
ПроблемаХотелось бы:public static Gender convert(String s) {  Gender g;  switch (s) {

Слайд 44Строки в предложениях switch
В качестве проверяемого значения можно указывать ссылку

на объект строки
В качестве значений для сравнения можно указывать
строковые литералы
ссылки

на строки, объявление которых снабжено модификатором final
Сравнение значений производится также, как если бы использовался метод String.equals()
регистр имеет значение
начальные и концевые пробелы имеют значение
Строки в предложениях switchВ качестве проверяемого значения можно указывать ссылку на объект строкиВ качестве значений для сравнения

Слайд 45Проблема
Имеется:




Хотелось бы:

List list = new ArrayList();

Map m =

new HashMap();

// Зачем два раза писать одно и

то же???

List list = new ArrayList<>();

Map> m = new HashMap<>();

ПроблемаИмеется:Хотелось бы:List list = new ArrayList();Map m =   		new HashMap();// Зачем два раза писать одно

Слайд 46Вывод типа (type inference)
Можно использовать, если компилятор из контекста может

понять, какие типы нужны
– «алмаз» (diamond)
В основном используется

при создании объектов в ходе инициализации переменных
При создании объектов нельзя путать отсутствие указания типа (будет обобщенный тип) и оператор алмаз (будет вывод типа)
Из-за механизма стирания в параметризованных типах могут возникать непроверяемые компилятором приведения

Вывод типа (type inference)Можно использовать, если компилятор из контекста может понять, какие типы нужны – «алмаз» (diamond)

Слайд 47Проблема
Имеется:
FileWriter out = null;
try {
out = new FileWriter(fileName);

// Некоторый вывод данных
} finally {
try {

if (out != null) {
out.close();
}
} catch (IOException ex) {
}
}
// По-хорошему ресурсы надо закрывать в блоке finally.
// Закрытие может выбрасывать исключения...
// И так для каждого ресурса…
ПроблемаИмеется:FileWriter out = null;try {  out = new FileWriter(fileName);  // Некоторый вывод данных} finally {

Слайд 48Проблема
Хотелось бы:
try (FileWriter out = new FileWriter(fileName)) {
// Некоторый

вывод данных
}
try (FileReader in = new FileReader(fileName1);

FileWriter out = new FileWriter(fileName2)) {
// Некоторая обработка данных
}
ПроблемаХотелось бы:try (FileWriter out = new FileWriter(fileName)) { // Некоторый вывод данных} try (FileReader in = new

Слайд 49Блок try с ресурсами
Можно применять к ресурсам, объекты которых реализуют

интерфейс java.lang.AutoCloseable
Содержит метод void close() throws Exception
От него наследуют многие

интерфейсы, например java.io.Closeable
Можно объявлять несколько объектов в одном блоке
Закрываются ресурсы в порядке, обратном порядку объявления
Блок try с ресурсамиМожно применять к ресурсам, объекты которых реализуют интерфейс java.lang.AutoCloseableСодержит метод void close() throws ExceptionОт

Слайд 50Блок try с ресурсами
Блок может содержать и блоки catch, и

блок finally
Код в них вызывается после того, как ресурс(ы) будут

закрыты
Присутствует явное разделение исключений, возникающих из-за закрытия ресурсов и в ходе выполнения блока try
Если возникают оба вида исключений
Исключения закрытия «замалчиваются» (suppressed)
Все замолчанные исключения можно получить, вызвав метод getSupressed() у выброшенного исключения бизнес-логики

Блок try с ресурсамиБлок может содержать и блоки catch, и блок finallyКод в них вызывается после того,

Слайд 51Проблема
Имеется:
try {
// Некоторая логика, ввод данных, рефлексия
}
catch (ClassNotFoundException

ex) {
logger.log(ex);
throw ex;
}
catch (IOException ex) {

logger.log(ex);
throw ex;
}
// Дублирование кода. И что, метод для этого писать?..
ПроблемаИмеется:try {  // Некоторая логика, ввод данных, рефлексия}catch (ClassNotFoundException ex) {  logger.log(ex);  throw ex;}catch

Слайд 52Проблема
Имеется:
try {
// Некоторая логика, ввод данных, рефлексия
}
catch (Throwable

ex) {
logger.log(ex);
throw ex;
}
// Радикально.
// Но если

некоторые виды исключений все-таки надо
// различать, то что тогда делать? Особенно, если у них
// общий непосредственный предок?
ПроблемаИмеется:try {  // Некоторая логика, ввод данных, рефлексия}catch (Throwable ex) {  logger.log(ex);  throw ex;}//

Слайд 53Проблема
Хотелось бы:
try {
// Некоторая логика, ввод данных, рефлексия
}
catch

(ClassNotFoundException | IOException ex) {
logger.log(ex);
throw ex;
}

ПроблемаХотелось бы:try {  // Некоторая логика, ввод данных, рефлексия}catch (ClassNotFoundException | IOException ex) {  logger.log(ex);

Слайд 54Отлов исключений нескольких типов
Нужные типы исключений разделяются вертикальной чертой |
Блоков

catch с таким синтаксисом может быть много
В блоке catch можно

использовать только общие методы указанных типов исключений
Переменная, куда помещается ссылка на объект исключения, неявно приобретает модификатор final
Отлов исключений нескольких типовНужные типы исключений разделяются вертикальной чертой |Блоков catch с таким синтаксисом может быть многоВ

Слайд 55
Спасибо за внимание!

Спасибо за внимание!

Слайд 56Дополнительные источники
Арнолд, К. Язык программирования Java [Текст] / Кен Арнолд,

Джеймс Гослинг, Дэвид Холмс. – М. : Издательский дом «Вильямс»,

2001. – 624 с.
Вязовик, Н.А. Программирование на Java. Курс лекций [Текст] / Н.А. Вязовик. – М. : Интернет-университет информационных технологий, 2003. – 592 с.
Эккель, Б. Философия Java [Текст] / Брюс Эккель. – СПб. : Питер, 2011. – 640 с.
Шилдт, Г. Java 2, v5.0 (Tiger). Новые возможности [Текст] / Герберт Шилдт. – СПб. : БХВ-Петербург, 2005. – 206 с.
JavaSE at a Glance [Электронный ресурс]. – Режим доступа: http://www.oracle.com/technetwork/java/javase/overview/index.html, дата доступа: 21.10.2011.
JavaSE APIs & Documentation [Электронный ресурс]. – Режим доступа: http://www.oracle.com/technetwork/java/javase/documentation/api-jsp-136079.html, дата доступа: 21.10.2011.
Дополнительные источникиАрнолд, К. Язык программирования Java [Текст] / Кен Арнолд, Джеймс Гослинг, Дэвид Холмс. – М. :

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика