Ist es möglich, eine Obergrenze (Super X) für einen benannten generischen Typ festzulegen?

9

Angenommen, ich habe die folgende statische Methode und Schnittstelle (Liste ist java.util.List). Beachten Sie, dass die statische Methode für den Platzhaltertyp der Liste ein "Super Foo" erzwingt.

%Vor%

Ich möchte in der Lage sein, eine Klasse hinzuzufügen, die die Schnittstelle mit der statischen Methode wie folgt implementiert:

%Vor%

Dies wird offensichtlich nicht kompiliert, weil T nicht die "super Foo" Einschränkung hat. Ich sehe jedoch keine Möglichkeit, die Einschränkung "Super Foo" hinzuzufügen. Zum Beispiel - das Folgende ist nicht legal:

%Vor%

Gibt es eine Möglichkeit, dieses Problem zu lösen - idealerweise ohne StaticMethod oder MyInterface zu ändern?

    
Nick Fortescue 04.06.2011, 10:47
quelle

2 Antworten

1

Ich gehe hier ein bisschen aus, aber ich denke, hier ist die untere Grenze das Problem, weil Sie über die tatsächliche Klasse Bescheid wissen müssen, die der Grenze entspricht, wenn Sie darauf verweisen ... Sie können die Vererbung nicht verwenden .

Hier ist eine Verwendung, die kompiliert, aber beachten Sie, dass ich die tatsächliche Klasse nennen muss, die ein Super von Foo ist:

%Vor%

Kommentare?

ps. Ich mag die Frage:)

    
Bohemian 04.06.2011 11:31
quelle
0

Wenn Sie sicher sind, dass aList Objekte enthält, die sicher in <? super Foo> umgewandelt werden können, können Sie Folgendes tun:

%Vor%

Siehe das vollständige und funktionierende Beispiel: Ссылка

    
Matyas 04.06.2011 12:15
quelle

Tags und Links