Impossible de comprendre ce problème de génériques. J'ai ces interfaces:Problème de génériques Java avec la classe
public interface LoadableObject
{
}
public interface LoadableObjectFactory<T>
{
}
Et maintenant, je veux faire:
public class ObjectReference<T extends LoadableObject>
{
Class<? extends LoadableObjectFactory<T>> _cls;
public ObjectReference(LoadableObjectFactory<T> obj)
{
_cls = obj.getClass();
}
}
Mais je reçois une erreur:
incompatible types
found : java.lang.Class<capture#885 of ? extends test.LoadableObjectFactory>
required: java.lang.Class<? extends test.LoadableObjectFactory<T>>
_cls = obj.getClass();
^
Je suis en mesure de compiler si je supprimer le type params pour LoadableObjectFactory
à la définition de _cls
, mais alors c'est un type incomplet ... Y a-t-il quelque chose qui me manque ou est-ce simplement impossible?
On dirait une autre victime d'effacement de type, mais je ne suis pas en mesure de vérifier tout de suite. –
Je voudrais une explication pour ce que vous essayez vraiment de faire ici, parce qu'à première vue, cette conception n'a aucun sens pour moi. Je comprends Loadable et LoadableFactory, mais que fait la classe de référence pour vous, et pourquoi doit-elle avoir une fabrique en tant que membre de données privé? – duffymo
Merci à tous pour vos réponses tous m'ont été utiles! Quant à ce que j'essaie de faire, je ne vais pas entrer dans les détails, mais l'échantillon que vous voyez n'a pas tous les détails désagréables que j'ai dans mon code et je ne veux pas vous faire mal au cerveau pour essayer de comprendre toutes les raisons derrière cela :). Je voulais juste savoir quoi en faire. Donc, maintenant que je comprends - Java est faux, mais java est en train de compiler donc je vais devoir m'en occuper;). – inkredibl