Упражнения за извънаудиторна заетост
Задача 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>, така че грешката да бъде открита от компилатора.