2017-02-16 3 views
0

私はいくつかのクラスそのスーパークラスを必要とする汎用メソッドにどのように渡すのですか?

public final class Response<T> { 

} 

を持っていると私は私が継承するスーパークラスからスーパークラス

public class BaseResponse { 

} 

public class LoginResponse extends BaseResponse{ 

} 

後、私は、オブジェクトResponse<LoginResponse> myResponseを作成していると私は、次のメソッドにこのオブジェクトを渡したいですスーパークラスのメソッドとフィールドでのみ動作します。

public static boolean responseIsValid(Response<BaseResponse> response, Context context) { 
    return false; 
} 

そして、wrong argument typeエラーが発生しています。正しく渡すには?

答えて

3

LoginResponseが本当にBaseResponse

public class LoginResponse extends BaseResponse { } 
を拡張する場合はもちろんのワイルドカード Response<? extends BaseResponse>

public static boolean responseIsValid(Response<? extends BaseResponse> response, Context context) { 
    return false; 
} 

Response<BaseResponse>を置き換えることができます

関連する問題