Java Generics Concepts: Difference between revisions
Line 1: | Line 1: | ||
=Internal= | =Internal= | ||
* [[Java_Generics#Subjects|Java Generics]] | * [[Java_Generics#Subjects|Java Generics]] | ||
=Overview= | |||
'''Generics''', or '''generic types''', or '''parameterized types''' are a Java language extension and a set of compiler features introduced in [[Java#Java_5|Java 5]] that allow writing more reliable code by making certain categories of bugs detectable at compile time. | |||
=Type Inference= | =Type Inference= |
Revision as of 21:14, 14 September 2021
Internal
Overview
Generics, or generic types, or parameterized types are a Java language extension and a set of compiler features introduced in Java 5 that allow writing more reliable code by making certain categories of bugs detectable at compile time.
Type Inference
Organizatorium
Covariance
Let T and S be two types (class or function types), such that S is a subtype of T. If method m of T is overridden in S, then the corresponding types from the m's signature can either preserve the relationship between T and S (the type used in S is a subtype of the corresponding type in T), reverse the relationship (the type used in S is a super type of the type used in T), or neither preserve nor reverse this relationship. If they preserve the relationship to T and S, we say they are covariant, if they reverse the relationship of T and S, we say they are contravariant.