Generic: Verständnisfrage

Status
Nicht offen für weitere Antworten.

Souljumper

Aktives Mitglied
hab hier diesen beispiel code, es geht um generische Typprüfung und kovarianz, kontravarianz, invarianz usw.
Was genau bedeutet bei der statischen methode maxObject das "<T> T" ?
Ein T ist der Rückgabewert und das zweite ?

Code:
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

public class Generics<T> 
{
	/* Der Comparator muss entweder T (im Beispiel Double) sein, oder ein/der Obertyp (hier Number) */
	public static <T> T maxObject(List<T> list, Comparator<? super T> cmp)
	{
		T max = null;
		for (T x: list)
		{
			if(max== null || cmp.compare(x, max) > 0)
				max = x;
		}
		return max;
	}	

	public static void main(String[] strings)
	{
		List<Double> list = new ArrayList<Double>();
		list.add(2.3); list.add(23.2); list.add(74.0);
		Double n = maxObject(list, new MyComparator());
		System.out.println(n);
	}
}

import java.util.Comparator;

public class MyComparator implements Comparator<Number> 
{

	public int compare(Number o1, Number o2) 
	{
		return (o1.doubleValue() < o2.doubleValue() ? -1 :
			    (o1.doubleValue() > o2.doubleValue()) ? 1 : 0);
	}

}
 

Marco13

Top Contributor
Das zweite T (ohne die Spitzen Klammern) ist der Rückgabewert.

Das erste <T> dient nur als Information, dass es da etwas gibt, was T heißt. Wenn man nur
public static T maxObject(List<T> list, Comparator<? super T> cmp)
schreiben würde, dann wäre an dieser Stelle nicht bekannt, was "T" sein soll. Wenn man aber schreibt
public static <T> T maxObject(List<T> list, Comparator<? super T> cmp)
dann wird durch das <T> praktisch gesagt: T ist an dieser Stelle der Typ, den du dir aus dem übergebenen Argument zusammenreimen darfst. Wenn man eine List<Integer> übergibt, ist T Integer. Wenn man eine List<String> übergibt, ist T String.

Mehr dazu in der Generics-Bibel:
http://www.angelikalanger.com/GenericsFAQ/FAQSections/TechnicalDetails.html#FAQ401
 

0x7F800000

Top Contributor
<T> gibt an, dass die methode generisch ist.
Das ist wichtig, damit der compiler weiß, wofür im folgenden das "T" überhaupt steht. Es ist auch wichtig, weil du da einschränkungen an T stellen kannst, etwa
<T extends X> wenn du zB das Interface "X" bei der ausführung der methode unbedingt brauchst.

das zweite T bei "<T> T" steht für den Rückgabetyp.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
L Datentypen Deklarierte Felder einer Generic Klasse bestimmen Java Basics - Anfänger-Themen 7
O Comparable Generic Java Basics - Anfänger-Themen 24
F Type safety: A generic array of.. Fehler Java Basics - Anfänger-Themen 3
Yjuq Generic Methode - Wie muss die List Definition aussehen? Java Basics - Anfänger-Themen 3
S Gibt es für die Klasse HashMap Generic Implementierungen? Java Basics - Anfänger-Themen 11
C Generic im Konstruktor Java Basics - Anfänger-Themen 1
O Generic - Verstädnisproblem Java Basics - Anfänger-Themen 5
G instanceof in Generic Java Basics - Anfänger-Themen 7
N Datentypen LocalDate Generic Comparable Java Basics - Anfänger-Themen 2
P Variablen generic type variablen in object array Java Basics - Anfänger-Themen 1
M Generic Prüfungsvorbereitung Java Basics - Anfänger-Themen 4
G Generic und Listen Java Basics - Anfänger-Themen 8
J Generic - Autoboxing Java Basics - Anfänger-Themen 18
N Generic clonen => eclipse empfiehlt @SuppressWarnings("unchecked") Java Basics - Anfänger-Themen 2
S Generic Java Basics - Anfänger-Themen 9
P Java Generic Wildcard Java Basics - Anfänger-Themen 2
G Namen der Generic Klasse Java Basics - Anfänger-Themen 3
D generic extendet class Java Basics - Anfänger-Themen 10
M Generic's und Vererbung Java Basics - Anfänger-Themen 6
B Generic? Enum - So lösbar? Java Basics - Anfänger-Themen 8
capgeti Datentypen Static generic return value von Subclass? Java Basics - Anfänger-Themen 9
C Generic Tutorial Java Basics - Anfänger-Themen 12
T Generic vom Generic: Zu sehr verschachtelt? Java Basics - Anfänger-Themen 6
V libssrckdtree-j Generic k-d tree Java library - weiss nicht wo des hin soll Java Basics - Anfänger-Themen 2
L Sinn hinter Generic? Java Basics - Anfänger-Themen 5
0 Was bedeutet dieser Generic-code? Java Basics - Anfänger-Themen 3
A Generic Problem Java Basics - Anfänger-Themen 16
S Generic Methode: syntax klemmt Java Basics - Anfänger-Themen 10
S generic programmierung "ne:w T[X]" Java Basics - Anfänger-Themen 2
G generic interface problem Java Basics - Anfänger-Themen 12
Safado generic array creation Java Basics - Anfänger-Themen 2
G Frage zur Generic java ? Java Basics - Anfänger-Themen 9
G eine Frage zur Generic Java ? Java Basics - Anfänger-Themen 8
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
A Verständnisfrage Java Basics - Anfänger-Themen 12
M Verständnisfrage: Warum wird die Datei ohne Inhalt übertragen Java Basics - Anfänger-Themen 3
P Verständnisfrage: PageFactory.initElements Java Basics - Anfänger-Themen 2
R do while Schleife Verständnisfrage Java Basics - Anfänger-Themen 2
G while.next() Verständnisfrage Java Basics - Anfänger-Themen 16
Vivien Kurze Verständnisfrage zu Java Point aus java.awt.* Java Basics - Anfänger-Themen 5
C Erste Schritte Anfänger Verständnisfrage zum Compiler Java Basics - Anfänger-Themen 31
T Verständnisfrage Objekt Getter Setter Java Basics - Anfänger-Themen 102
K Verständnisfrage Server/Client BufferedReader, PrintWriter Java Basics - Anfänger-Themen 2
Der Grütz Verständnisfrage zu Übung aus Java Kurs - Schaltjahr bestimmen Java Basics - Anfänger-Themen 2
J Verständnisfrage zu throws neben Funktionen Java Basics - Anfänger-Themen 2
TimoN11 Verständnisfrage bei Aufgabe Java Basics - Anfänger-Themen 2
P Verständnisfrage zum Mapping Java Basics - Anfänger-Themen 3
M Java Version Verständnisfrage Java Basics - Anfänger-Themen 16
M Verständnisfrage zu eine Online Aufgabe Java Basics - Anfänger-Themen 7
T Verständnisfrage zur Konsolenausgabe Java Basics - Anfänger-Themen 2
M Verständnisfrage zu Generics Java Basics - Anfänger-Themen 7
D Verständnisfrage zur Modellierung einer HDD Java Basics - Anfänger-Themen 17
W Methoden Verständnisfrage Vererbung von Methoden Java Basics - Anfänger-Themen 14
S Verständnisfrage lokale Ordnerpfade Java Basics - Anfänger-Themen 1
T Verständnisfrage zu Interfaces Java Basics - Anfänger-Themen 7
J Java Starthilfe Verständnisfrage Aufgabe Java Basics - Anfänger-Themen 2
O Anfänger, Verständnisfrage Java Basics - Anfänger-Themen 3
C Verständnisfrage zu Modulo Java Basics - Anfänger-Themen 6
C Verständnisfrage bezüglich der Do-While Schleife Java Basics - Anfänger-Themen 9
L Verständnisfrage - Speicherabbild Java Basics - Anfänger-Themen 4
melly_ Verständnisfrage zu args Java Basics - Anfänger-Themen 3
A Variablen Verständnisfrage bzgl. Variablen/Referenzen Java Basics - Anfänger-Themen 3
K Verständnisfrage eines Abschnitts Java Basics - Anfänger-Themen 6
K Rekursion Verständnisfrage Java Basics - Anfänger-Themen 19
S Modell View Controller Verständnisfrage Java Basics - Anfänger-Themen 24
J Superklassen Konstruktor Verständnisfrage Java Basics - Anfänger-Themen 1
JavaTalksToMe Erste Schritte Println-Frage (Verständnisfrage) Java Basics - Anfänger-Themen 1
R Verständnisfrage zu Objekten u. Übergabeparameter Java Basics - Anfänger-Themen 8
G Collections Verständnisfrage zur For-Each-Schleife Java Basics - Anfänger-Themen 7
b1ck Interface Verständnisfrage zum GUI mit "swing" Java Basics - Anfänger-Themen 1
kilopack15 Verständnisfrage zur Verwendung von notify() bei Threads Java Basics - Anfänger-Themen 2
G Verständnisfrage zu for-each Java Basics - Anfänger-Themen 4
DontFeedTheTroll Erste Schritte Verständnisfrage zu If-Anweisung Java Basics - Anfänger-Themen 7
K Rekursion-Verständnisfrage Java Basics - Anfänger-Themen 4
J Java Server Pages - Verständnisfrage Java Basics - Anfänger-Themen 2
Z Verständnisfrage Anfängerprogramm Java Basics - Anfänger-Themen 0
T Verständnisfrage Zuweisungs-/arithmet. Operatoren Java Basics - Anfänger-Themen 2
G Methoden Verständnisfrage zur Methoden Java Basics - Anfänger-Themen 7
LionAge Kapselung, Verständnisfrage zur Objekterzeugung Java Basics - Anfänger-Themen 4
Z Verständnisfrage zum Multithreading Java Basics - Anfänger-Themen 3
R OOP / Verständnisfrage zum Konstuktor (siehe code) Java Basics - Anfänger-Themen 7
gamebreiti Verständnisfrage zu contains() Java Basics - Anfänger-Themen 10
A Verständnisfrage - Koordinatenumrechnung Java Basics - Anfänger-Themen 9
J Erste Schritte Verständnisfrage im Bezug auf das (richtige) Programmieren Java Basics - Anfänger-Themen 5
M Verständnisfrage zu JUnit Tests und private Methoden Java Basics - Anfänger-Themen 3
H Verständnisfrage Array Java Basics - Anfänger-Themen 2
I Interface Verständnisfrage Interfaces (Bsp.: Enumeration) Java Basics - Anfänger-Themen 2
I Verständnisfrage zu BridgePattern, Verwedung von super() Java Basics - Anfänger-Themen 4
P Verständnisfrage Java Basics - Anfänger-Themen 3
kaoZ Best Practice Verständnisfrage Listener bei lokalen Objekten Java Basics - Anfänger-Themen 8
D Input/Output Verständnisfrage Verzeichnis-/Dateiliste erstellen & Dateikonvertierung Java Basics - Anfänger-Themen 1
S Verständnisfrage zu Anweisungen und deren Wirkung Java Basics - Anfänger-Themen 7
H Verständnisfrage für oder Anweisung Java Basics - Anfänger-Themen 8
E Threads Verständnisfrage bzgl. Threads und Sleep Java Basics - Anfänger-Themen 2
T Erste Schritte Verständnisfrage: Getter und Setter Methoden Java Basics - Anfänger-Themen 3
H Verständnisfrage zu Java-Ausgabe Java Basics - Anfänger-Themen 3
S Verständnisfrage Java Basics - Anfänger-Themen 2
N Verständnisfrage Code Java Basics - Anfänger-Themen 8
B Verständnisfrage Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben