2016-04-04 21 views
0

Ich frage mich, was der richtige Weg ist eine statische Methode mit einer Signatur wie folgt zu nennen:Java Typ Hinweise auf generische Methode aufrufen

public static <T1, T2> Map<Map T1, Set<T2>> aggregate(List<Map<String, Object>> list, String colK, String colV) 
{ 
    ... 
} 

ich versucht war, es wie folgt aus irgendeinem Grund zu nennen

Map<String, Set<Integer>> map = aggregate<String, Integer>(lData, "id", "ref"); 

aber es hat nicht kompilieren, wenn ich es zu

Map<String, Set<Integer>> map = aggregate(lData, "id", "ref"); 

geändert ich frage mich nur, warum es nicht die Hinweise auf die Notwendigkeit haben rechte Seite. Und stattdessen gab mir Kompilierungsfehler. Es sagt, es erwartet ein Semikolon nach den Hinweisen auf der rechten Seite. Ist der zweite eine geeignete Methode, die Methode aufzurufen? Könnte mir jemand bitte etwas Licht geben?

+1

Sie haben versucht, die C# Syntax. In Java liegen die Typparameter vor dem Methodennamen. 'Irgendeine Klasse. staticMethod() '. –

+0

@PaulBoddington Oh! Das erklärt einiges! lol – shinkou

Antwort

3

Wie here gezeigt, die Art und Weise, die Methode zu nennen wäre.

ClassName.<String, Integer>aggregate(lData, "id", "ref"); 

wo ClassName der Name der Klasse ist, dass das Verfahren in enthalten ist

+0

Super! Danke für die schnelle Antwort. Jetzt erinnere ich mich, dass ich es vorher gesehen habe. Wenn ich jedoch den Klassennamen weglassen möchte, da er innerhalb derselben Klasse aufgerufen wird, wie wäre es dann? – shinkou

+3

Leider können Sie in diesem Fall den Klassennamen nicht weglassen. – TNT

+0

Das wollte ich wissen! Vielen Dank! :) – shinkou

Verwandte Themen