kann mir jemand sagen was die Angabe <A> bei der Definition der unten stehenden abstrakten Klasse in Java bedeutet?
public abstract class List<A> {
...
}
Habe es auch schon bei der Definition von Interfaces gesehen, z.B.
interface List<T> {
...
}
Ich versuche hier gerade Java-Coding zu interpretieren, kann mir aber leider nicht genau erklären was die Angabe in den spitzen Klammern bedeutet, bzw. bewirkt.
Hi,
das sind sogenannte Generics. Damit kann man Klassen/Interfaces spezialisieren.
Man kann sagen List<Auto> a = new List<Auto>(); Aber die Liste ist nicht explizit für Autos konzipiert, sondern für ObjeKte jeglicher Art. Das wird mit einem T aufgezeigt.
Bei ABAP wäre das sowas wie DATA: list TYPE TABLE OF cl_class.
Dies ist natürlich eine GAAAANZ grobe Erklärung. Sonst findest du über google haufenweise Hinweise, empfehlenswert wäre da JAVA ist auch eine Insel vom Rheinwerkverlag. Soweit ich weiß sogar konstenlos in einer Onlineversion zu genießen.
danke für die Infos. Ich habe mir jetzt mal ein paar Sachen angeschaut, aber wenn ich ehrlich bin, so ganz verstanden habe ich es noch nicht.
Wenn es richtig verstanden habe, handelt es sich bei der Angabe in den spitzen Klammern um einen generischen Typ, also ein Typ der verschiedene unterschiedlichen Typen annehmen kann. Dann wäre das in Deinem übertragenen ABAP-Beispiel doch eher
DATA list TYPE TABLE OF OBJECT
oder wenn man es etwas spezialisierter will
DATA list TYPE TABLE OF IF_LIST
Was mich aber viel mehr verwirrt ist, dass wäre ja aber eigentlich eher ein Klassen- bzw. Instanz-Attribut. In dem Java-Beispiel ist es jedoch Bestandteil der Klassen- bzw. Interface-Definition selbst? Ich kann ja im ABAP nicht sagen