J'ai quelques types qui ressemblent à ceReconstruire types génériques à l'exécution avec Guice via les types et TypeLiterals
// a value that is aware of its key type (K)
Bar<K>
// something that deals with such values and keys
Foo<V extends Bar<K>, K>
Comment peut-on recréer Foo tel que vous pouvez le consommer dans Guice? Le bit sur lequel je suis coincé est comment faire une référence croisée du K de Bar au 2ème type paramétré de Foo.
Ainsi, par exemple,
WildcardType kType = Types.subtypeOf(Object.class);
WildcardType barType =
Types.subtypeOf(Types.newParameterizedType(Bar.class, pipeKey));
ParameterizedType fooType =
Types.newParameterizedType(Foo.class, pipelineableType, pipeKey);
vraiment cela semble mal car il est essentiellement:
Foo<V extends Bar<? extends Object>, ? extends Object>
Ce qui n'est pas la même chose que:
Foo<V extends Bar<K>, K>
Comme dans ce dernier cas I sais que K est un type cohérent.
Des idées?
Vive
Matt
intéressant, je n'avais pas pensé à une liaison de cette façon. Ce que je cherche vraiment la capacité de rechercher un ensemble de liaisons qui correspondent à une spécification qui peut inclure certains paramètres de type, par exemple.toutes les liaisons qui sont Foo, String> si je suppose que dans ce cas, il suffit de simplement chercher Foo ,String> ... hmmm –
Matt
Avez-vous vu http://stackoverflow.com/questions/1100784/guice-spi-find-bindings -by-wildcard-types? – NamshubWriter
oui c'est mon Q aussi bien, j'ai implémenté cela d'une manière qui fonctionne jusqu'ici ... mais je me demandais comment l'étendre à un cas plus général. A la réflexion je ne suis pas sûr que ce soit même nécessaire car c'est juste un joker. Je dois y réfléchir un peu plus ... – Matt