Yeah, but that way you have to cast outsite getConverter:

IConverter<Integer> c = (IConverter<Integer>) getConverter(Integer.class);

The way I propose, the casting control is inside.

On Tue, Apr 15, 2008 at 4:39 PM, Igor Vaynberg <[EMAIL PROTECTED]>
wrote:

> if i have to do a hard cast there is very little advantage to <L>,
> might as well be public IConverter<?> getConverter(Class<?> clazz)
>
> -igor
>
>
> On Tue, Apr 15, 2008 at 12:25 PM, Bruno Borges <[EMAIL PROTECTED]>
> wrote:
> > This is what you could do:
> >
> >  import java.util.Locale;
> >
> >  public class Test {
> >    public <L> IConverter<L> getConverter(Class<L> type) {
> >       return null;
> >    }
> >  }
> >
> >  class InnerTest extends Test {
> >
> >    public <K> IConverter<K> getConverter(Class<K> type) {
> >       if (Integer.class.isAssignableFrom(type)) {
> >          return (IConverter<K>) new IConverter<Integer>() {
> >
> >             public Integer convertToObject(String value, Locale locale)
> {
> >                return null;
> >             }
> >             public String convertToString(Integer value, Locale locale)
> {
> >                return null;
> >             }
> >          };
> >       } else {
> >          return super.getConverter(type);
> >       }
> >    }
> >
> >    public void foo() {
> >       IConverter<Integer> converter = getConverter(Integer.class);
> >    }
> >  }
> >
> >  interface IConverter<X> {
> >    public X convertToObject(String value, Locale locale);
> >    public String convertToString(Integer value, Locale locale);
> >  }
> >
> >  But, you are obligated to use a hard cast inside of getConverter either
> way.
> >
> >  Regards
> >
> >  On Tue, Apr 15, 2008 at 4:04 PM, Igor Vaynberg <[EMAIL PROTECTED]
> >
> >
> >
> > wrote:
> >
> >  > Type mismatch: cannot convert from new IConverter<Integer>(){} to
> >  > IConverter<Z>
> >  >
> >  > i can hard cast to IConverter<Z> myself, but then there is very
> little
> >  > point to having it generified
> >  >
> >  > -igor
> >  >
> >  >
> >  > On Tue, Apr 15, 2008 at 11:59 AM, Bruno Borges <
> [EMAIL PROTECTED]>
> >  > wrote:
> >  > > What is the compile error message?
> >  > >
> >  > >  On Tue, Apr 15, 2008 at 3:10 PM, Igor Vaynberg <
> [EMAIL PROTECTED]
> >  > >
> >  > >
> >  > >
> >  > > wrote:
> >  > >
> >  > >  > maybe just IConverter<?> getConverter(Class<?> cl)
> >  > >  >
> >  > >  > -igor
> >  > >  >
> >  > >  >
> >  > >  > On Tue, Apr 15, 2008 at 11:05 AM, Igor Vaynberg <
> >  > [EMAIL PROTECTED]>
> >  > >  > wrote:
> >  > >  > > example below doesnt compile, so im not exactly sure how to
> >  > override
> >  > >  > >  generified getconverter() properly ... do we need to change
> our
> >  > >  > >  generics decl somehow?
> >  > >  > >
> >  > >  > >  -igor
> >  > >  > >
> >  > >  > >      @Override
> >  > >  > >         public <Z> IConverter<Z> getConverter(Class<Z> type)
> >  > >  > >         {
> >  > >  > >                 if (Integer.class.isAssignableFrom(type))
> >  > >  > >                 {
> >  > >  > >                         return new IConverter<Integer>()
> >  > >  > >                         {
> >  > >  > >                                 private static final long
> >  > >  > serialVersionUID = 1L;
> >  > >  > >
> >  > >  > >                                 public Integer
> >  > convertToObject(String
> >  > >  > value, Locale locale)
> >  > >  > >                                 {
> >  > >  > >                                         return null;
> >  > >  > >                                 }
> >  > >  > >
> >  > >  > >                                 public String
> >  > convertToString(Integer
> >  > >  > value, Locale locale)
> >  > >  > >                                 {
> >  > >  > >                                         return null;
> >  > >  > >                                 }
> >  > >  > >
> >  > >  > >                         };
> >  > >  > >                 }
> >  > >  > >                 else
> >  > >  > >                 {
> >  > >  > >                         return super.getConverter(type);
> >  > >  > >                 }
> >  > >  > >         }
> >  > >  > >
> >  > >  >
> >  > >
> >  > >
> >  > >
> >  > >  --
> >  > >  Bruno Borges
> >  > >  blog.brunoborges.com.br
> >  > >  +55 1185657739
> >  > >
> >  > >  "The glory of great men should always be
> >  > >  measured by the means they have used to
> >  > >  acquire it."
> >  > >  - Francois de La Rochefoucauld
> >  > >
> >  >
> >
> >
> >
> >  --
> >
> >
> > Bruno Borges
> >  blog.brunoborges.com.br
> >  +55 1185657739
> >
> >  "The glory of great men should always be
> >  measured by the means they have used to
> >  acquire it."
> >  - Francois de La Rochefoucauld
> >
>



-- 
Bruno Borges
blog.brunoborges.com.br
+55 1185657739

"The glory of great men should always be
measured by the means they have used to
acquire it."
- Francois de La Rochefoucauld

Reply via email to