Язык программирования JAVA презентация

Содержание Что такое generics? Зачем? Ошибка выполнения Преимущества Ошибка компиляции Терминалогия Параметризация Wildcard Параметры с ограничениями Ограничения использования

Слайд 1Язык программирования JAVA
Generics


Слайд 2Содержание
Что такое generics? Зачем?
Ошибка выполнения
Преимущества
Ошибка компиляции
Терминалогия
Параметризация
Wildcard
Параметры с ограничениями
Ограничения использования






Слайд 3Что такое generics?








Обобщения (generics) — это параметризированные типы.

Обобщенные:
типы (generic types)
классы (без

enum, исключений, анонимных!)
интерфейсы (без аннотаций!)
методы (generic methods)
конструкторы (generic constructors)


Слайд 4До Java 5.0
class

Box {
private Object item;
public void setItem (Object o) {
item = o;
}
public Object getItem () {
return item;
}
}

public class Test {
public static void main(String[] args) {
Box box = new Box();
box.setItem("hello");
String str1 = (String)box.getItem();
System.out.println(str1);
}
}

Результат выполнения: hello


Слайд 5Ошибка выполнения
class Box

{
private Object item;
public void setItem (Object o) {
item = o;
}
public Object getItem () {
return item;
}
}

public class Test {
public static void main(String[] args) {
Box box = new Box();
box.setItem("hello");
Integer int1 = (Integer)box.getItem();
//Exception
System.out.println(int1);
}
}
Результат выполнения: Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer

Слайд 6Зачем?
Контейнеры
гетерогенные
гомогенные

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

class Box {
private T item;
public void setItem (T o) {
item = o;
}
public T getItem () {
return item;
}
}

public class Test {
public static void main(String[] args) {
Box box = new Box();
box.setItem("hello");
String str1 = box.getItem();
System.out.println(str1);
}
}


Слайд 7Преимущества
Определение ошибок использования типов на этапе компиляции.

Использование параметризованных
- типов
-

методов
- конструкторов

Использование wildcards
- с ограничениями
- без ограничений

Слайд 8Ошибка компиляции
сlass Box {

private T item;
public void setItem (T o) {
item = o;
}
public T getItem () {
return item;
}
}

public class Test {
public static void main(String[] args) {
Box box = new Box();
box.setItem(1234567);//Exception
String str1 = box.getItem();
System.out.println(str1);
}
}

Compilation completed with 1 error Error: java: incompatible types: int cannot be converted to java.lang.String


Слайд 9Терминология
Generic:
class A {…} класс
public A() {…} конструктор
public T m(T t) {…}

метод

T – параметр generic-а

Слайд 10Параметризация
Подстановка вместо параметра конкретного значения при использовании generic:

Параметризованный класс:
A a =

new A();

Обобщения действуют только со ссылочными типами
Box box = new Box(); //Error!

Слайд 11Класс с двумя параметрами
class Box {

private T item;
private V item2;
public Box(T o, V o2) {
item = o;
item2 = o2;
}
}

Слайд 12Wildcard
Использование generic с указанием wildcards:
? extends

<== unbounded wildcard
Generic класс:
class A {…}

Wildcard параметризованный класс:
A a = new A();
A a = new A();
A a = new A();

class Box<Т> {}
class Human {
public void useBox(Box box) {}
}
public class Test {
public static void main(String[] args) {
Box stringBox = new Box<>();
Box numberBox = new Box<>();
Human human = new Human();
human.useBox(stringBox);
human.useBox(numberBox);
}
}


Слайд 13Параметры с ограничениями
При объявлении можно наложить ограничения на значение параметра generic.
class

A {…}
J1, J2 - интерфейсы
При использовании класса A
если B – интерфейс
T – интерфейс, обязан наследовать B, J1, J2,
если B – класс
T – класс, обязан наследовать B, реализовывать J1, J2

Слайд 14Ограничение сверху
class Box

{
private T item;
public void setItem (T o) {
item = o;
}
public Integer getIntValue () {
return item.intValue();
}
}

public class Test {
public static void main(String[] args) {
Box box = new Box<>();
box.setItem(123.45F);
Integer int1 = box.getIntValue();
System.out.println(int1);
}
}


Слайд 15Обобщенные интерфейсы

interface Box<Т> {
setItem(T item);
}

class BoxImpl implements Box {
public void setItem(String item) {}
}

public class Test {
public static void main(String[] args) {
Box stringBox = new BoxImpl<>();
stringBox.setItem("Hello World");
}
}


Слайд 16Иерархия классов
class Box

{
public void setItem (T item) {}
}

class BigBox extends Box {
public void setBigItems(K item, T item2) {}
}

public class Test {
public static void main(String[] args) {
BigBox stringBox = new BigBox<>();
stringBox.setItem("Very big item", 23);
}
}


Слайд 17Ограничения использования
Внутри generic нельзя:

создать объект этого типа
создать массив такого типа
использовать в

секции catch
использовать в статическом контексте
использовать в instanceof (справа)
наследовать

Слайд 18Вопросы?


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

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

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

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

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


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

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