Упражнения за извънаудиторна заетост

Задача 1

Да се дефинира generic клас Box<T>.

Класът трябва да съдържа:

  • поле value от тип T;
  • метод setValue(T value);
  • метод getValue();
  • метод isEmpty(), който връща дали стойността е null.

Да се създадат обекти Box<String>, Box<Integer> и Box<Double>. Да се демонстрира, че всеки обект работи с конкретния тип, зададен при създаването му.

Задача 2

Да се дефинира generic клас Pair<K, V>.

Класът трябва да съдържа:

  • поле key от тип K;
  • поле value от тип V;
  • конструктор;
  • методи за четене;
  • метод getDescription().

Да се създадат двойки:

  • име на студент и оценка;
  • код на продукт и цена;
  • име на град и население.

Задача 3

Да се дефинира generic метод:

public static <T> void printArray(T[] array)

Методът трябва да обхожда масива и да отпечатва всички елементи. Да се тества с масив от String, масив от Integer и масив от Double.

Задача 4

Да се дефинира generic интерфейс Repository<T>.

Интерфейсът трябва да съдържа методи:

  • void save(T item);
  • T findById(int id);
  • List<T> findAll().

Да се дефинира клас StudentRepository, който имплементира Repository<Student>. Да се използва колекция за съхраняване на студентите.

Задача 5

Да се демонстрира защо raw типовете не трябва да се използват.

Да се създаде пример с raw Box, в който се записва стойност от един тип и след това се прави грешно преобразуване към друг тип. След това същият пример да се реализира чрез Box<String> или Box<Integer>, така че грешката да бъде открита от компилатора.


This site uses Just the Docs, a documentation theme for Jekyll.