Java Generics Concepts: Difference between revisions
Line 2: | Line 2: | ||
* [[Java_Generics#Subjects|Java Generics]] | * [[Java_Generics#Subjects|Java Generics]] | ||
=Overview= | =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]] | '''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]] and improved in subsequent Java releases, which allow writing more reliable code by making certain categories of bugs detectable at compile time. | ||
=Type Inference= | =Type Inference= |
Revision as of 21:15, 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 and improved in subsequent Java releases, which 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.