Do języka Java od wersji 5.0 wprowadzono klasy generyczne, czyli klasy parametryzowane innymi klasami. Na pierwszy rzut oka polimorfizm parametryczny w Javie przypomina szablony klas w języku C++, co zdaje się sugerować nawet składnia. Jest to jednak podobieństwo bardzo powierzchowne. Z jednej strony ułatwia wykorzystanie nowego mechanizmu programistom znającym C++; z drugiej jednak strony jest źródłem konfuzji spowodowanych inną semantyką klas generycznych w porównaniu z szablonami klas, wynikającą ze zupełnie innego sposobu ich implementacji. W niniejszej pracy podjęto próbę wyjaśnienia mechanizmu generyczności w Javie ze zwróceniem uwagi z jednej strony na istotne własności matematyczne, a z drugiej strony na semantykę, wynikającą ze sposobu zaimplementowania tego mechanizmu. Takie bardziej abstrakcyjne, lecz "inżynierskie" podejście do klas generycznych z pewnością ułatwi ich zrozumienie i będzie sprzyjać właściwemu zastosowaniu w praktyce.
EN
The most significant change made in Java programming language as implemented in JDK 5.0 and later versions was the addition of generic types (generics), which support classes with abstract type parameters that can be instantiated. Superficially generics in Java resemble templates in C++ which is suggested by the syntax. This is often the source of confusion, since the semantics is quite different. In this paper we shortly explain the most important mathematical properties of generics as well as the technique of erasure underlying the implementation of generics in Java.
JavaScript jest wyłączony w Twojej przeglądarce internetowej. Włącz go, a następnie odśwież stronę, aby móc w pełni z niej korzystać.