Generische Java-Felddeklaration

8

In einer Klasse ohne generische Typen möchte ich ein ziemlich komplexes generisches Feld ähnlich dem folgenden deklarieren:

%Vor%

Problem ist der Java-Compiler wird mich nicht lassen:)

Also meine Frage ist, wie führe ich T und S richtig ein, ohne Typen zu meiner Klasse Client hinzuzufügen.

Mein Ziel ist es, das Class zu einem Untertyp von Serializable zu machen und das Consumer ist ein Subtyp der Klasse, die Sie für Class ausgewählt haben.

    
succcubbus 14.08.2015, 11:15
quelle

3 Antworten

7

Sie können nicht. Ihre einzige Option besteht darin, die generischen Typparameter in Ihrer Client -Klassendeklaration zu deklarieren. Wenn Ihre Client -Klasse keine generischen Typparameter hat, können ihre Member nicht generisch sein. Sie müssen tatsächliche Typen in der Deklaration Ihrer Klassenmitglieder verwenden.

    
Eran 14.08.2015, 11:17
quelle
4

Sie müssen irgendwo den Typ-Parameter einführen, damit Sie sie in der Definition für Ihre Klassenmitglieder verwenden können.

Die Einführung eines Typparameters kann nur auf Klassenebene oder auf Methodenebene erfolgen. In Ihrem Fall sollte es auf Klassenebene sein:

%Vor%

Dies bedeutet jedoch, dass für beide Mitglieder ( classToConsumerTry1 und classToConsumerTry2 ), T und S gleich sind. Wenn Sie möchten, dass sie anders sind, müssen Sie diese zwei Werte aus zwei verschiedenen Klassen erhalten, die beide mit separaten Typparametern parametrisiert sind.

    
Konstantin Yovkov 14.08.2015 11:18
quelle
4

Sie können dies nicht direkt auf dem Feld tun, aber Sie können Ihre Typenrichtlinie durch generische Methoden pflegen (sie können sogar in nicht-generischen Klassen existieren):

%Vor%     
Philip Voronov 16.08.2015 21:25
quelle

Tags und Links