Языки программирования
<<  JavaScript Обработка событий в «Lazarus»  >>
Новые возможности Java 5
Новые возможности Java 5
Краткое содержание
Краткое содержание
Что такое Generic
Что такое Generic
Параметризация класса
Параметризация класса
Generics и коллекции
Generics и коллекции
Пример определения generic-класса
Пример определения generic-класса
Generic List
Generic List
Подсчет количества слов
Подсчет количества слов
Пример реализации generic-класса
Пример реализации generic-класса
Несовместимость generic-типов
Несовместимость generic-типов
Проверка типов времени исполнения
Проверка типов времени исполнения
Реализация Generic
Реализация Generic
Метод void dump
Метод void dump
Решение
Решение
Проблема
Проблема
Bounded wildcard
Bounded wildcard
Java Advanced
Java Advanced
Generic-метод
Generic-метод
Новые возможности
Новые возможности
Bounded type argument
Bounded type argument
Метод
Метод
Пример использования
Пример использования
Upper bounded wcard
Upper bounded wcard
Ограничения Generic
Ограничения Generic
Смешение generic и не-generic кода
Смешение generic и не-generic кода
Один класс
Один класс
Пример кода
Пример кода
Код без generic
Код без generic
Преобразование типов
Преобразование типов
Autoboxing
Autoboxing
Примитивные типы и обертки
Примитивные типы и обертки
Boxing и unboxing
Boxing и unboxing
Генерация кода
Генерация кода
Исходный код
Исходный код
Подсчет количеств слов
Подсчет количеств слов
Особенности Autoboxing
Особенности Autoboxing
Расширенный цикл
Расширенный цикл
Сумма чисел в коллекции
Сумма чисел в коллекции
Новый вариант
Новый вариант
Сумма чисел
Сумма чисел
Минимум в массиве
Минимум в массиве
Map
Map
Интерфейс
Интерфейс
Varargs и format
Varargs и format
Varargs
Varargs
Методы
Методы
Определение метода
Определение метода
Нахождение минимума
Нахождение минимума
Интерфейс Formattable
Интерфейс Formattable
Static Import
Static Import
Импортирование статических членов
Импортирование статических членов
Применение Static Import
Применение Static Import
Перечисления
Перечисления
Пример public final static
Пример public final static
Перечислимый тип
Перечислимый тип
Идентификация переменных
Идентификация переменных
Перечисления как классы
Перечисления как классы
Меры длины
Меры длины
Операции
Операции
Double apply
Double apply
Методы работы с перечислениями
Методы работы с перечислениями
Вывод соотношений мер длины
Вывод соотношений мер длины
Множество экземпляров перечисления
Множество экземпляров перечисления
Отображение из перечисления
Отображение из перечисления
Заключение
Заключение
Ссылки
Ссылки
New Java language fatures
New Java language fatures
Interfaces
Interfaces
Вопросы
Вопросы
Презентация «Java 5». Размер 113 КБ. Автор: Geo.

Загрузка...

Java 5

содержание презентации «Java 5.ppt»
СлайдТекст
1 Новые возможности Java 5

Новые возможности Java 5

Новые возможности Java 5. Java Advanced.

2 Краткое содержание

Краткое содержание

Краткое содержание. Что такое generic Реализация Generic Смешение generic и не generic-кода Autoboxing Расширенный for Varargs и format Static Import Перечисления Заключение. Java Advanced / Новые возможности Java 5.

3 Что такое Generic

Что такое Generic

Что такое generic. Часть 1.

4 Параметризация класса

Параметризация класса

Что такое Generic. Generic ? параметризация класса времени компиляции Совместимость типов проверяется при компиляции Во время исполнения информация о фактическом типе отсутствует Единая реализация Template – параметризация класса времени исполнения. Java Advanced / Новые возможности Java 5.

5 Generics и коллекции

Generics и коллекции

Generics и коллекции. Коллекции, множетсва, списки, … параметризуются типом элемента Collection<E> Set<E> List<E> … Отображения параметризуются типами ключа и значения Map<K, V> SortedMap<K, V> … Java Advanced / Новые возможности Java 5.

6 Пример определения generic-класса

Пример определения generic-класса

Пример определения generic-класса. public interface List<E> extends Collection<E> { E get(int i); set(int i, E e); add(E e); Iterator<E> iterator(); ... }. Java Advanced / Новые возможности Java 5.

7 Generic List

Generic List

Generic List. List<E> ? список элементов E Раньше List list = new List(); list.add(new Integer(1)); Integer i = (Integer) list.get(0); Теперь List<Integer> list = new List<Integer>(); list.add(new Integer(1)); Integer i = list.get(0); Java Advanced / Новые возможности Java 5.

8 Подсчет количества слов

Подсчет количества слов

Пример. Подсчет количества слов. Map<String, Integer> map = new TreeMap<String, Integer>(); for (Iterator<String> i = c.iterator(); i.hasNext(); ) { String word = i.next(); Integer count = map.get(word); int value = (count == null) ? 0 : count.intValue(); map.put(word, new Integer(value + 1)); }. Java Advanced / Новые возможности Java 5.

9 Пример реализации generic-класса

Пример реализации generic-класса

Пример реализации generic-класса. public class AL<E> implements List<E> { private E[] elements; public AL() { elements = (E[]) new Object[10]; } public E get(int i) { return elements[i]; } ... }. Java Advanced / Новые возможности Java 5.

10 Несовместимость generic-типов

Несовместимость generic-типов

Несовместимость generic-типов. Generic-типы не совместимы по присваиванию List<Integer> li = new ArrayList<Integer>(); List<Object> lo = li; Иначе — ошибки lo.add(“hello”); Integer li = lo.get(0); // ClassCastException. Java Advanced / Новые возможности Java 5.

11 Проверка типов времени исполнения

Проверка типов времени исполнения

Проверка типов времени исполнения. Класс Collections List<S> checkedList(List<S>, S.class) checkedCollection checkedMap … Java Advanced / Новые возможности Java 5.

12 Реализация Generic

Реализация Generic

Реализация Generic. Часть 2.

13 Метод void dump

Метод void dump

Проблема 1. Метод void dump(Collection<Object> c) { for (Iterator<Object> i = c.iterator(); i.hasNext(); ) { Object o = i.next(); System.out.println(o); } } Вызовы List<Object> l; dump(l); List<Integer> l; dump(l); Java Advanced / Новые возможности Java 5.

14 Решение

Решение

Решение 1 – wildcard. Метод void dump(Collection<?> c) { for (Iterator<?> i = c.iterator(); i.hasNext(); ) { Object o = i.next(); System.out.println(o); } } Вызовы List<Object> l; dump(l); List<Integer> l; dump(l); Java Advanced / Новые возможности Java 5.

15 Проблема

Проблема

Проблема 2. Метод void draw(List<Shape> c) { for (Iterator<Shape> i = c.iterator(); i.hasNext(); ) { Shape s = i.next(); s.draw(); } } Вызовы List<Shape> l; draw(l); List<Circle> l; draw(l); Java Advanced / Новые возможности Java 5.

16 Bounded wildcard

Bounded wildcard

Решение 2 – bounded wildcard. Метод void draw(List<? extends Shape> c) { for (Iterator<? extends Shape> i = c.iterator(); i.hasNext(); ) { Shape s = i.next(); s.draw(); } } Вызовы List<Shape> l; draw(l); List<Circle> l; draw(l); Java Advanced / Новые возможности Java 5.

17 Java Advanced

Java Advanced

Проблема 3. Метод void addAll(Object[] a, Collection<?> c) { for (int i = 0; i < a.length; i++) { c.add(a[i]); } }. Java Advanced / Новые возможности Java 5.

18 Generic-метод

Generic-метод

Решение 3 – generic-метод. Метод <T> void addAll(T[] a, Collection<T> c) { for (int i = 0; i < a.length; i++) { c.add(a[i]); } } Примеры использования addAll(new String[10], new ArrayList<String>()); addAll(new Object[10], new ArrayList<Object>()); addAll(new String[10], new ArrayList<Object>()); addAll(new Object[10], new ArrayList<String>()); Java Advanced / Новые возможности Java 5.

19 Новые возможности

Новые возможности

Проблема 4. Метод <T> void addAll(Collection<T> c, Collection<T> c2) { for (Iterator<T> i = c.iterator(); i.hasNext(); ) { T o = i.next(); c2.add(o); } } Примеры использования addAll(new AL<Integer>(), new AL<Integer>()); addAll(new AL<Integer>(), new AL<Object>()); Java Advanced / Новые возможности Java 5.

20 Bounded type argument

Bounded type argument

Решение 4 – bounded type argument. Метод <T, S extends T> void addAll(Collection<S> c, Collection<T> c2) { for (Iterator<S> i = c.iterator(); i.hasNext(); ) { S o = i.next(); c2.add(o); } } Примеры использования addAll(new AL<Integer>(), new AL<Integer>()); addAll(new AL<Integer>(), new AL<Object>()); Java Advanced / Новые возможности Java 5.

21 Метод

Метод

Решение 4’ – bounded wildcard. Метод <T> void addAll(Collection<? extends T> c, Collection<T> c2) { for (Iterator<T> i = c.iterator(); i.hasNext(); ) { T o = i.next(); c2.add(o); } } Примеры использования addAll(new AL<Integer>(), new AL<Integer>()); addAll(new AL<Integer>(), new AL<Object>()); Java Advanced / Новые возможности Java 5.

22 Пример использования

Пример использования

Проблема 5. Метод <T extends Comparable<T>> T max(Collection<T> c) { … } Пример использования List<Integer> il; Integer I = max(il); class Test implements Comparable<Object> {…} List<Test> tl; Test t = max(tl); Java Advanced / Новые возможности Java 5.

23 Upper bounded wcard

Upper bounded wcard

Решение 5 – upper bounded wcard. Метод <T extends Comparable<? super T>> max(Collection<T> c) { … } Пример использования List<Intger> il; Integer I = max(il); class Test implements Comparable<Object> {…} List<Test> tl; Test t = max(tl); Java Advanced / Новые возможности Java 5.

24 Ограничения Generic

Ограничения Generic

Ограничения Generic. Невозможно создать массив параметра типа Collection<T> c; T[] ta; new T[10]; Невозможно создать массив Generic-классов new ArrayList<List<Integer>>(); List<?>[] la = new List<?>[10]; List<Integer>[] la = new List<Integer>[10]; Java Advanced / Новые возможности Java 5.

25 Смешение generic и не-generic кода

Смешение generic и не-generic кода

Смешение generic и не-generic кода. Часть 3.

26 Один класс

Один класс

Generic – один класс. Примеры List<String> ls; List<Integer> li; ls.getClass() == li.getClass() // True ls instanceof List // True ls instanceof List<String> Java Advanced / Новые возможности Java 5.

27 Пример кода

Пример кода

Пример кода. Collection<Integer> c; Iterator<Integer> i = c.iterator(); Integer max = i.next(); while(i.hasNext()) { Integer next = i.next(); if (next.compareTo(result) > 0) { max = next; } }. Java Advanced / Новые возможности Java 5.

28 Код без generic

Код без generic

Код без generic. Collection c; Iterator i = c.iterator(); Integer max = (Integer) i.next(); while(i.hasNext()) { Integer next = (Integer) i.next(); if (next.compareTo(result) > 0) { max = next; } }. Java Advanced / Новые возможности Java 5.

29 Преобразование типов

Преобразование типов

Преобразование типов. Уничтожение информации о типе List l = new ArrayList<String>(); Добавление информации о типе List<String> l = (List<String>) new ArrayList(); List<String> l1 = new ArrayList(); Unchecked warning. Java Advanced / Новые возможности Java 5.

30 Autoboxing

Autoboxing

Autoboxing. Часть 4.

31 Примитивные типы и обертки

Примитивные типы и обертки

Примитивные типы и обертки. Примитивный тип. Тип-обертка. boolean. Boolean. byte. Byte. short. Short. char. Character. int. Integer. long. Long. float. Float. double. Double. void. Void. Java Advanced / Новые возможности Java 5.

32 Boxing и unboxing

Boxing и unboxing

Boxing и unboxing. Boxing – заключение значения примитивного типа в обертку int a = …; new integer(a) unboxing – извлечение значения примитивного типа из обертки integer a = …; a.Intvalue(). Java Advanced / Новые возможности Java 5.

33 Генерация кода

Генерация кода

Autoboxing. Генерация кода для boxing и unboxing при необходимости Явное приведение типов (Integer) 10 (int) new Integer(10) (Object) 10 Приведение типов “по ходу”. Java Advanced / Новые возможности Java 5.

34 Исходный код

Исходный код

Пример. Исходный код Integer i1 = 1; Integer i2 = 2; Integer i3 = i1 + i2; Сгенерированный код Integer i1 = Integer.valueOf(1); Integer i2 = Integer.valueOf(2); Integer i3 = Integer.valueOf(i1.intValue() + i2.intValue()); Java Advanced / Новые возможности Java 5.

35 Подсчет количеств слов

Подсчет количеств слов

Пример. Подсчет количеств слов. Map<String, Integer> map = new TreeMap<String, Integer>(); for (Iterator<String> i = c.iterator(); i.hasNext(); ) { String word = i.next(); Integer count = map.get(word); m.put(word, (count == null) ? 1 : count + 1); }. Java Advanced / Новые возможности Java 5.

36 Особенности Autoboxing

Особенности Autoboxing

Особенности Autoboxing. Обработка null при unboxing NullPointerException Сравнение на равенство (==) Примитивные типы сравниваются по значению Обертки сравниваются по ссылке Снижение производительности. Java Advanced / Новые возможности Java 5.

37 Расширенный цикл

Расширенный цикл

Расширенный цикл for. Часть 5.

38 Сумма чисел в коллекции

Сумма чисел в коллекции

Пример. Сумма чисел в коллекции (1). Старый вариант (проверка на null) int sum = 0; for (Iterator<Integer> i = c.iterator(); i.hasNext(); ) { Integer j = i.next(); if (j != null) { sum += j; } }. Java Advanced / Новые возможности Java 5.

39 Новый вариант

Новый вариант

Пример. Сумма чисел в коллекции (2). Новый вариант (проверка на null) int sum = 0; for (Integer j : c) { if (j != null) { sum += j; } }. Java Advanced / Новые возможности Java 5.

40 Сумма чисел

Сумма чисел

Пример. Сумма чисел в коллекции (3). Старый вариант int sum = 0; for (Iterator<Integer> i = c.iterator(); i.hasNext(); ) { sum += i.next(); } Новый вариант int sum = 0; for (int j : c) { sum += j; }. Java Advanced / Новые возможности Java 5.

41 Минимум в массиве

Минимум в массиве

Пример. Минимум в массиве. Старый вариант int min = Integer.MAX_VALUE; for (int i = 0; i < a.length; i++) { if (min > a[i]) min = a[i]; } Новый вариант int min = Integer.MAX_VALUE; for (int i : a) { if (min > i) min = i; }. Java Advanced / Новые возможности Java 5.

42 Map

Map

Пример. Подсчет количеств слов. Map<String, Integer> map = new TreeMap<String, Integer>(); for (String word : c) { Integer count = map.get(word); m.put(word, (count == null) ? 1 : count + 1); }. Java Advanced / Новые возможности Java 5.

43 Интерфейс

Интерфейс

Интерфейс Iterable<E> Позволяет использовать новый for public interface Iterable<T> { Iterator<T> iterator(); } Реализуется стандартными коллекциями. Java Advanced / Новые возможности Java 5.

44 Varargs и format

Varargs и format

Varargs и format. Часть 6.

45 Varargs

Varargs

Varargs. Механизм создания методов, принимающих переменное число параметров. Java Advanced / Новые возможности Java 5.

46 Методы

Методы

Методы .format. Позволяют форматировать строки аналогично функции printf Классы Formatter String PrintWriter Пример String.format("(%d, %d)--(%d, %.3f)", 1, 1, 2, 0.5) System.out.format(“Hello %s ", userName). Java Advanced / Новые возможности Java 5.

47 Определение метода

Определение метода

Определение метода. Метод format format(String pattern, Object… arguments) Общий случай Последний аргумент может быть объявлен в виде T … <имя аргумента> Реальный тип аргумента T[] Может передаваться либо массив, либо переменное число аргументов. Java Advanced / Новые возможности Java 5.

48 Нахождение минимума

Нахождение минимума

Пример. Нахождение минимума. Пример метода public static int min(int ... a) { int min = Integer.MAX_VALUE; for (int i : a) { if (min > i) min = i; } return min; } Примеры использования min(3) min(1, 2, 3, -1, -2, -3) min(new int[]{1, 2, 3, -1, -2, -3}). Java Advanced / Новые возможности Java 5.

49 Интерфейс Formattable

Интерфейс Formattable

Интерфейс Formattable. Аналог метода toString() для класса Formattable (%s) Определение интерфейса interface Formattable { void formatTo( Formatter formatter, // куда выводить int flags, // как выводить int width, // мин. ширина поля int precision // макс. ширина поля ) }. Java Advanced / Новые возможности Java 5.

50 Static Import

Static Import

Static Import. Часть 7.

51 Импортирование статических членов

Импортирование статических членов

Импортирование статических членов. Импортирование поля import static java.lang.Math.PI; … angle = PI / 2 Импортирования метода import static java.lang.Math.cos; … cos(angle). Java Advanced / Новые возможности Java 5.

52 Применение Static Import

Применение Static Import

Применение Static Import. При многократном доступе к статическим полям или методам других классов Для методоыв импортируются все перегруженные версии Широкое применение Static Import снижает читаемость кода. Java Advanced / Новые возможности Java 5.

53 Перечисления

Перечисления

Перечисления. Часть 8.

54 Пример public final static

Пример public final static

Как было раньше. Пример public final static int NEW = 1; public final static int RUNNING = 2; public final static int BLOCKED = 3; public final static int FINISHED = 4; Проблемы Нет проверки типов Нет проверки уникальности Плохая расширяемость Малая информативность. Java Advanced / Новые возможности Java 5.

55 Перечислимый тип

Перечислимый тип

Перечислимый тип. Пример public enum State { NEW, RUNNING, BLOCKED, FINISHED } Каждое перечисление является независимой областью видимости. Java Advanced / Новые возможности Java 5.

56 Идентификация переменных

Идентификация переменных

Идентификация переменных. Классом Экземпляром Именем Номером Имя Идентификатор экземпляра Метод name() Номер Может быть передан в конструктор экземпляра Метод ordinal(). Java Advanced / Новые возможности Java 5.

57 Перечисления как классы

Перечисления как классы

Перечисления как классы. Перечисление может иметь Закрытые конструкторы Поля Методы Абстрактные методы, если они определены в каждом экземпляре Перечисление может реализовывать интерфейсы. Java Advanced / Новые возможности Java 5.

58 Меры длины

Меры длины

Пример. Меры длины (1). public enum Unit { KILOMETER(1e3), METER(1), MILLIMETER(1e-3); private final double length; private Unit(double length) { this.length = length; } public double getLength() { return length; } }. Java Advanced / Новые возможности Java 5.

59 Операции

Операции

Пример. Операции (1). public enum Operation { PLUS { double eval(double x, double y) { return x + y; } }, MINUS { double eval(double x, double y) { return x - y; } }, TIMES { double eval(double x, double y) { return x * y; } }, DIVIDE { double eval(double x, double y) { return x / y; } }; abstract double eval(double x, double y); }. Java Advanced / Новые возможности Java 5.

60 Double apply

Double apply

Пример. Операции (2). double apply(Operation op, double x, double y) { return op.eval(x, y); }. Java Advanced / Новые возможности Java 5.

61 Методы работы с перечислениями

Методы работы с перечислениями

Методы работы с перечислениями. Класс Enum – базовый для перечислений name() – имя ordinal() – номер valueOf(Class, name) – экземпляр по номеру Дополнительные values() – все экземпляры valueOf(name) – экземпляр по имени. Java Advanced / Новые возможности Java 5.

62 Вывод соотношений мер длины

Вывод соотношений мер длины

Пример. Меры длины (2). Вывод соотношений мер длины for (Unit u1 : Unit.values()) { for (Unit u2 : Unit.values()) { System.out.println(String.format( "There are %f %sS in one %s", u2.getLength()/u1.getLength(), u1, u2 )); } }. Java Advanced / Новые возможности Java 5.

63 Множество экземпляров перечисления

Множество экземпляров перечисления

Класс EnumSet. Множество экземпляров перечисления Храниться побитно Создание EnumSet EnumSet<T> EnumSet.noneOf(T.class) EnumSet<T> EnumSet.allOf(T.class) EnumSet<T> EnumSet.of(e1, e2, …) EnumSet<T> EnumSet.copyOf(EnumSet<T> s) EnumSet<T> EnumSet.copyOf(Collection<T> t) EnumSet<T> EnumSet.complementOf(EnumSet<T> s). Java Advanced / Новые возможности Java 5.

64 Отображение из перечисления

Отображение из перечисления

Класс EnumMap. Отображение из перечисления Храниться в массиве Создание EnumMap EnumMap<K, V>(K.class) EnumMap<K, V>(EnumMap<K, V>) EnumMap<K, V>(Map<K, V>). Java Advanced / Новые возможности Java 5.

65 Заключение

Заключение

Заключение. Часть 9.

66 Ссылки

Ссылки

Ссылки (1). Generics Tutorial // http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf JSR 14 (Generics) // http://jcp.org/en/jsr/detail?id=14 Autoboxing // http://java.sun.com/j2se/1.5.0/docs/guide/language/autoboxing.html JSR 201 (Autoboxing) // http://jcp.org/en/jsr/detail?id=201. Java Advanced / Новые возможности Java 5.

67 New Java language fatures

New Java language fatures

Ссылки (2). New Java Language Fatures // http://java.sun.com/j2se/1.5.0/docs/relnotes/features.html#lang Enums (JLS) // http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.9 Import Declarations (JLS) // http://java.sun.com/docs/books/jls/third_edition/html/packages.html#7.5. Java Advanced / Новые возможности Java 5.

68 Interfaces

Interfaces

Ссылки (3). Interfaces (JLS) // http://java.sun.com/docs/books/jls/third_edition/html/interfaces.html. Java Advanced / Новые возможности Java 5.

69 Вопросы

Вопросы

Вопросы. Java Advanced / Новые возможности Java 5.

«Java 5»
Сайт

5informatika.net

115 тем