ich folgendes Problem bin vor:Java Generics: Bound Mismatch: Der Typ ist kein gültiger Ersatz für den beschränkten Parameter des Typs
ich diese Klasse & Schnittstellendefinitionen haben
public abstract class ViewModelRefreshPostListFragment<T extends IRefreshPostViewCallback, R extends RefreshPostViewModel<T>>
extends RefreshPostListFragment implements IRefreshPostView {
private final ViewModelHelper<T, R> mViewModeHelper = //error here
new ViewModelHelper<>();
...
}
public abstract class RefreshPostViewModel<R1 extends IRefreshPostViewCallback> extends AbstractViewModel<IRefreshPostViewCallback> {}
public class ViewModelHelper<T extends IView, R extends AbstractViewModel<T>> {}
public abstract class AbstractViewModel<T extends IView> {}
public interface IRefreshPostViewCallback extends IView {}
Eklipse gibt ich immer noch dieser Fehler: Bound Mismatch: der Typ R
ist kein gültiger Ersatz für den beschränkten Parameter <R extends AbstractViewModel<T>>
des Typs ViewModelHelper<T,R>
Basierend auf Java Vererbung I Crea ted diese 2 Ketten:
"Kette" von ViewModelRefreshPostListFragment
Klassendefinition
1) R extends RefreshPostViewModel<T>
->R extends RefreshPostViewModel<R1 extends IRefreshPostViewCallback>
->R extends AbstractViewModel<IRefreshPostViewCallback>
1,1) T extends IRefreshPostViewCallback
1,2) T
(aus RefreshPostViewModel<T>
) durch <R1 extends IRefreshPostViewCallback>
consitent Ergebnis ersetzt wird, von 1.1) und 1.2) also sollte der T-Parameter in Ordnung sein.
"Chain" von ViewModelHelper Klassendefinition
2) R extends AbstractViewModel<T>
2,1) T extends IView
, IRefreshPostViewCallback extends IView
->T
kann durch IRefreshPostViewCallback
ersetzt werden, wenn ich 2.1 gelten) auf 1,1) & & 1,2) wir siehe, Parameter T ist konsistent
Von 1) folgt R extends AbstractViewModel<IRefreshPostViewCallback>
von 2) folgt R extends AbstractViewModel<T>
und von 2. 1) folgt, dass T
durch IRefreshPostViewCallback
ersetzt werden kann, Wenn ich die Dinge richtig verstehe, sollte dieser Fehler nicht angezeigt werden, könnte mir jemand erklären, warum ist Eclipse geben mir den Fehler?
Vielen Dank!
Danke, diese Antwort hat mein Problem wirklich gelöst. Ich nehme an, Sie haben versehentlich 'ViewModelHelper' anstelle von' RefreshPostViewModel' im zweiten und dritten Abschnitt geschrieben. – FilipR