In Java können Sie statischen Methoden Typparameter hinzufügen, um Methoden zu erstellen, die mit Generika umgehen. Kannst du das gleiche mit Lambdas machen?Generische Lambdas in Java erstellen
In meinem Code ich habe
final private static <K,V> Supplier<Map<K, List<V>> supplier=HashMap::new;
Ich versuche, Typ Parameter zu tun, wie es eine Funktion, aber es lässt mich nicht.
Und wenn ich tun:
final private static Supplier<Map<?, List<?>>> supplier=HashMap::new;
Es ist nicht das Argument akzeptieren, wenn ich versuche, es zu benutzen. Was kann ich tun?
Das ist nicht eine Variable sein kann. In der Tat ist es nutzlos, eine Variable wie 'WhateverClassThatSupportsGenerics > var = ...; zu deklarieren, es sei denn, es ist ein Parameter einer Methode. –
Wo versuchst du die zweite Deklaration zu verwenden? (Die erste, wie Sie wahrscheinlich entdeckt haben, ist syntaktisch ungültig.) – Makoto
Es ist nicht möglich, ein beschränktes generisches Objekt zu konstruieren. Ihre Codezeile schlägt aus dem gleichen Grund fehl: "neue HashMap>" ist zulässig, aber 'neue HashMap , List>>' ist nicht. "?" bedeutet "Ich weiß nicht, welchen Typ diese HashMap verwendet", aber wenn Sie eine HashMap erstellen, wissen Sie immer, was Sie hineinlegen wollen (selbst wenn Sie sich für java.lang.Object entscheiden). –
VGR