Generische Klassen und Schnittstellen - thkwalter/physik GitHub Wiki
-
Die allgemeine Syntax einer Klassendeklaration lautet
NormalClassDeclaration : {ClassModifier} "class" TypeIdentifier [TypeParameters] [ClassExtends] [ClassImplements] [ClassPermits] ClassBody
-
Die Produktionsregeln für das Element
TypeParameters
lauten dabeiTypeParameters : "<" TypeParameterList ">" TypeParameterList : TypeParameter {, TypeParameter }
Die Produktionsregeln für das Element
TypeParameter
finden sich auf der Wiki-Seite "Typparameter". -
Enthält eine Klassendeklaration Typparameter, so spricht man von einer generischen Klasse.
-
Die allgemeine Syntax einer Schnittstellendeklaration lautet
NormalInterfaceDeclaration : {interfaceModifier} "interface" TypeIdentifier [TypeParameters] [InterfaceExtends] [InterfacePermits] InterfaceBody
-
Enthält eine Schnittstellendeklaration Typparameter, so spricht man von einer generischen Schnittstelle.
-
Ein parametrisierter Typ besitzt die Syntax
TypeIdentifier TypeArguments
Dabei muss der TypeIdentifier eine generische Klasse oder Schnittstelle bezeichnen und jedes Typargument der Bounds-Klausel des entsprechenden Typparameters genügen.
-
Ein einfaches Beispiel
public class MyGenericBean<T> { private T object; public T getObject() { return this.object; } public void setObject(T object) { this.object = object; } }
public class Example1 { public static void main(String[] args) { MyGenericBean<String> bean = new MyGenericBean<>(); bean.setObject("Hello World!"); System.out.println(bean.getObject()); } }
-
Ein komplexes Beispiel
public interface Quantity<Q extends Quantity<Q>> { ... } public interface Time extends Quantity<Time> { }