Re: [GENERIC] problème que je n'arrive pas à résoudre . P... de Generic :)
Rémi Forax <[email protected]> Mon, 24 Jan 2011 13:44:52 +0100
| Newsgroups | gmane.comp.java.french.general |
|---|---|
| Message-ID | <[email protected]> |
On 01/24/2011 01:05 PM, Dominique Gallot wrote: > Manque pas juste > Wrapper<? > *extends*A> wa = Wrappers./createWrapper/(*new*B()); > Au point 1 ? je pense que ca fait ce que tu veux. ou Wrapper<A> wa = Wrappers.<A>createWrapper(new B()); > Dominique sinon Laurent, ton cast ici sera supprimer par le compilo, il n'y aura pas de cast à l'exécution. Rémi > 2011/1/24 Laurent Forêt <[email protected] > <mailto:[email protected]>> > > 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://www.devcoop.fr/>, > http://laurentforet.org <http://laurentforet.org/> > IvyBeans Creator > Membre du JUG Bordeaux > >