Re: [GENERIC] problème que je n'arrive pas à réso udre . P... de Generic :)
Sebastien Cesbron <[email protected]> Mon, 24 Jan 2011 12:07:29 +0100
| Newsgroups | gmane.comp.java.french.general |
|---|---|
| Message-ID | <[email protected]> |
Salut
Perso je vois pas comment ça pourrait être possible car dans ton exemple
avec cast, tu ne donnes aucune information au compilo sur le type T donc il
ne sait pas ce qu'il doit te retourner
pour moi ça pourrait marcher comme ça mais c'est verbeux :
public static <T, S extends T> Wrapper<T> createWrapper(Class<T> classeT, S
s) {
return new Wrapper<T>((T)s);
}
seb
Le 24 janvier 2011 11:35, Laurent Forêt <[email protected]> a écrit :
> Bonjour,
>
> Comme c'est lundi et que je suis sympa, j'ai un petit casse tête sur les
> génériques à vous proposer :
>
> Soit le code suivant :
>
> public class TestCreateWrapper {
>
> @Test
> public void test() {
> *// POINT1*
> Wrapper<A> wa = Wrappers.createWrapper(new B());
> }
>
> public static class A {}
>
> public static class B extends A {}
>
> public static class Wrapper<T> {
> private T t;
> public Wrapper(T t) {
> this.t = t;
> }
> }
>
> public static class Wrappers {
> *//POINT2*
> public static <TODO> createWrapper(T t) {
> throw new UnsupportedOperationException("TODO");
> }
> }
> }
>
> au POINT 2 je code rapidement ça :
>
> public static <T> Wrapper<T> createWrapper(T t) {
> return new Wrapper<T>(t);
> }
>
> problème au POINT1 , je dois faire un cast (comme quand j'utilise des
> collections) : Wrapper<A> wa = Wrappers.createWrapper(*(A)*new B());
>
> Or ce cast, il me parait complètement inutile à l'usage et donc je dois me
> gourer quelque et part donc pour la réécriture de mon POINT2 :
>
> public static <T, S extends T> Wrapper<T> createWrapper(S s) {
> return new Wrapper<T>((T)s);
> }
>
> La Netbeans ne gueule plus et ne m'oblige pas à mettre ce cast Eclipse non
> plus d'ailleurs, alors je me dis cool, j'ai la solution au problème et je me
> dis que les génériques c'est quand même compliqué.
>
> Mais le pire c'est après que je lance mon test via mon super outil Maven, y
> a le compilo, le même que celui utiliser par Netbeans (Eclipse j'aurai pu
> comprendre il compile pas avec le même) qui m'injure :
>
> [ERROR]TestCreateWrapper.java:[14,46] incompatible types
> found : TestCreateWrapper.Wrapper<TestCreateWrapper.B>
> required: TestCreateWrapper.Wrapper<TestCreateWrapper.A>
>
>
> Alors là je me dis c'est ch... les generiques.
>
> Mais comme je suis sur de trouver quelqu'un super balèze sur les génériques
> sur cette liste et qui va m'écrire :"RTFM, la JLS à la ligne untel te dit
> que tu n'as qu'à faire comme ça." Déçu de ne pas avoir trouvé tout seul mais
> content d'avoir ma soluce je repars dans mon taffe.
>
> Any help will be appreciated !
>
> Laurent Forêt
> http://www.devcoop.fr,
> http://laurentforet.org
> IvyBeans Creator
> Membre du JUG Bordeaux
>