+1 for "public IConverter<?> getConverter(Class<?> clazz)"

having to cast the IConverter

>  return (IConverter<K>) new IConverter<Integer>() {

looks butt-ugly to me :-(


Am 15.04.2008 um 22:04 schrieb Igor Vaynberg:

that is actually a pro and not a con. we call getconverter() whle
users implement getconverter(). so id rather its us (wicket devs) that
have to cast

-igor


On Tue, Apr 15, 2008 at 12:42 PM, Bruno Borges <[EMAIL PROTECTED]> wrote:
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