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