2016-05-25 12 views
3

私は、コールバックを返すために、このインタフェースを使用していObject ArrayListをインターフェイス経由で渡す方法は?

public interface QueryCompleteListener { 
    void onQueryCompleted(int token, ArrayList<Object1> songList); 
} 

として定義されたインタフェースをしました。いくつかのコールバックでは、私はArrayList<Object1>を渡したいと思っており、場合によってはArrayList<Object2>をインターフェイスに通したいと思っています。

私は、オブジェクトの任意の型を渡すために

void onQueryCompleted(int token, ArrayList<Object> songList)

としてインターフェイスメソッドを宣言すると、それは私がArrayList<Object1>

答えて

9
を渡すことによって、このメソッドを呼び出すときに見つかったオブジェクト1に必要なオブジェクトを言ってエラーが発生します

以下を使用:

<T> void onQueryCompleted(int token, List<T> songList); 

詳細については、Generic Methodsを参照してください。

1

あなたが実際にあなたは、単に使用することができ、メソッド本体に型変数を必要としない限り:

void onQueryCompleted(int token, List<?> songList); 
0

ワイルドカードを移動するための方法ですが、あなたはおそらく、あなたが使用しているオブジェクトのタイプをコントロールのいくつかのフォームをしたいです。

だけのカスタムクラス(オブジェクト1、Object2に、...)カスタムインターフェイス(CustomSuperInterface)を実装を作成し、この

void onQueryCompleted(int token, List<? extends CustomSuperInterface> songList); 
のようなコレクションを宣言
関連する問題