2014-02-06 1 views
0

Я пытаюсь найти информацию о сырых типах и можно использовать с интерфейсом следующим образом:Использование сырого типа с интерфейсом в Java

public class GlobalConverter { 

    public interface Listener { 
     void onReady(Object t); 
    } 

    public void convert(String string, Class<?> resultClass, Listener listener) { 
     try { 
      listener.onReady(resultClass.newInstance()); 
     } catch (IllegalAccessException e) { 
     } catch (InstantiationException e) { 
     } 
    } 

    public void test() { 
     convert("Test", MyClass.class, new Listener() { 

      @Override 
      public void onReady(Object object /* Possible to be MyClass object ? */) { 
      } 
     }); 
    } 
} 

То, что я пытаюсь добиться бы, как и выше, но для конечного пользователя обратный вызов onReady вернет тип объекта resultClass. Любые подсказки/объяснения высоко оценены.

Спасибо.

ответ

3

Я сделаю сам Listener родовое:

public interface Listener<T> { 
    void onReady(T t); 
} 

И тогда метод convert также должен быть универсальным:

public <T> void convert(String string, Class<T> resultClass, Listener<T> listener) { 
    try { 
     listener.onReady(resultClass.newInstance()); 
    } catch (IllegalAccessException e) { 
    } catch (InstantiationException e) { 
    } 
} 

И называют это нравится:

convert("Test", MyClass.class, new Listener<MyClass>() { 
     @Override 
     public void onReady(MyClass object) { 
     } 
    }); 

 Смежные вопросы

  • Нет связанных вопросов^_^