sto affrontando il seguente problema:generici Java: mancata corrispondenza Bound: il tipo non è un sostituto valido per il parametro limitata del tipo
ho questi classe & definizioni di interfaccia
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 {}
Eclipse dà me ancora questo errore: Bound non corrispondente: il tipo R
non è un sostituto valido per il parametro limitato <R extends AbstractViewModel<T>>
del tipo ViewModelHelper<T,R>
sulla base di Java eredità mi crea ted queste 2 catene:
"catena" dalla definizione ViewModelRefreshPostListFragment
classe
1) R extends RefreshPostViewModel<T>
->R extends RefreshPostViewModel<R1 extends IRefreshPostViewCallback>
->R extends AbstractViewModel<IRefreshPostViewCallback>
1,1) T extends IRefreshPostViewCallback
1,2) T
(da RefreshPostViewModel<T>
) è sostituito dal <R1 extends IRefreshPostViewCallback>
risultato consitent da 1.1) e 1.2) quindi il parametro T deve essere OK.
"catena" dal ViewModelHelper definizione di classe
2) R extends AbstractViewModel<T>
2,1) T extends IView
, IRefreshPostViewCallback extends IView
->T
possono essere sostituiti da IRefreshPostViewCallback
Se applico 2.1) su 1.1) & & 1.2) abbiamo vedere, il parametro T è coerente
Da 1) segue R extends AbstractViewModel<IRefreshPostViewCallback>
da 2) segue R extends AbstractViewModel<T>
e da 2. 1) segue che T
può essere sostituito da IRefreshPostViewCallback
, Se capisco le cose correttamente, questo errore non dovrebbe apparire, qualcuno potrebbe spiegarmi, perché eclipse mi sta dando l'errore ??
Grazie!
Grazie, questa risposta ha davvero risolto il mio problema. Immagino che tu abbia accidentalmente scritto 'ViewModelHelper' invece di' RefreshPostViewModel' 2a e 3a sezione. – FilipR