2017-03-07 13 views
1

Error in extendsGenerics: Syntaxfehler auf Token "erweitert", erwartet

Ich habe eine Klasse wie folgt definieren.

public abstract class OptionList<X extends OptionList<X, T>, T extends OptionListItem<X, T>> 
extends CommonEntity<OptionList<X, T>> 

Und eine andere Klasse SecuredBean:

public abstract class SecuredBean<T extends CommonEntity<T>> 

Jetzt ist eine weitere Klasse dort, wo ich brauche SecureBean und wie passieren Option als Eingangsparameter, etwas erweitert: es

public class OptionListBean extends SecuredBean<OptionList<X extends OptionList<X, T>, T extends OptionListItem<X, T>>> { 

Hier gibt einen Fehler, der sagt, Syntaxfehler auf Token erweitert, erwartet.

Was mache ich hier falsch?

Danke.

+0

'OptionList ' ... können Sie erklären, was Ihr Denken hier ist? –

+0

Der einzige Weg, den ich gesehen habe, "erweitert" mit Generika verwendet wird, ist mit oberen begrenzten Wildcards, z. '? extends OptionList' –

+0

Dies ist der vorhandene Code. Ich kann dort nichts ändern. – parul

Antwort

2

Ihre OptionListBean ist keine generische Klasse, aber sie verwendet X und T in Definition. Es ist falsch. Da SecuredBean keine exakten Klassen als Template-Parameter akzeptiert, muss OptionListBean generisch sein.

Dieser Code kompiliert für mich:

class OptionListItem<X, T>{} 

class CommonEntity<T>{} 

abstract class OptionList<X extends OptionList<X, T>, T extends OptionListItem<X, T>> extends CommonEntity<OptionList<X, T>> {} 

abstract class SecuredBean<T extends CommonEntity<T>>{} 

class OptionListBean<X extends OptionList<X, T>, T extends OptionListItem<X, T>> extends SecuredBean<OptionList<X, T>> {} 

Ich weiß nicht Zweck dieser Klassen kann daher nicht sagen, wie mein Vorschlag für Ihren Fall von Nutzen sein wird.

Verwandte Themen