• Главная
  • Карта сайта
Не найдено

Java 5 - Презентация

Опубликовано: 06.09.2018

видео Java 5 - Презентация

Java Презентация курса

Презентация «Java 5» . Размер 113 КБ. Автор: Geo .

Слайд Текст
1

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

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


Презентация Java - программирования

2

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

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


Презентация системы обучения Java Middle Developer U-Rise

3

Что такое Generic

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

4

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

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

5

Generics и коллекции

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

6

Пример определения 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. 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-класса. 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-типы не совместимы по присваиванию 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. Часть 2.

13

Метод 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

Решение 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

Проблема 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-метод

Решение 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

Решение 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

Решение 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. Невозможно создать массив параметра типа 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 кода. Часть 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. 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. Часть 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 – заключение значения примитивного типа в обертку 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. Обработка 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<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. Часть 6.

45

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

50

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 снижает читаемость кода. Java Advanced / Новые возможности Java 5.

53

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

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

54

Пример 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

Пример. Операции (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

Ссылки (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

Ссылки (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»
Новости
Провайдеры:
  • 08.09.2015

    Batyevka.NET предоставляет услуги доступа к сети Интернет на территории Соломенского района г. Киева.Наша миссия —... 
    Читать полностью

  • 08.09.2015
    IPNET

    Компания IPNET — это крупнейший оператор и технологический лидер на рынке телекоммуникаций Киева. Мы предоставляем... 
    Читать полностью

  • 08.09.2015
    Boryspil.Net

    Интернет-провайдер «Boryspil.net» начал свою работу в 2008 году и на данный момент является одним из крупнейших поставщиков... 
    Читать полностью

  • 08.09.2015
    4OKNET

    Наша компания работает в сфере телекоммуникационных услуг, а именно — предоставлении доступа в сеть интернет.Уже... 
    Читать полностью

  • 08.09.2015
    Телегруп

    ДП «Телегруп-Украина» – IT-компания с 15-летним опытом работы на рынке телекоммуникационных услуг, а также официальный... 
    Читать полностью

  • 08.09.2015
    Софтлинк

    Высокая скоростьМы являемся участником Украинского центра обмена трафиком (UA — IX) с включением 10 Гбит / сек... 
    Читать полностью

rss