2014-02-06 89 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) { 
     } 
    });