Store DataType <? расширяет T> в поле класса - PullRequest
3 голосов
/ 20 июня 2011

Я пытаюсь сохранить переменную с типом данных DataType<? extends T>.
Я пытался с DataType<? extends T> var;, но, похоже, не работает.

Сохранение как DataType<?> var; работает, но яне может привести к DataType<? extends T>.

Есть ли возможность заставить его работать?

РЕДАКТИРОВАТЬ:

Возможно, это будет проще,когда я дам больше информации.

Я использую AndroidHttpClient в AsyncTask , который выполняет различные запросы в фоновом режиме, показывая ProgressDialog .
Я ищупростая реализация, которая может позволить мне передать ResponseHandler в качестве параметров для метода execute реализации HttpClient .

1 Ответ

2 голосов
/ 20 июня 2011

РЕДАКТИРОВАТЬ

Проблема в том, что параметризованный тип объявлен в методе.Вы не можете сохранить параметр с типами, которые вы хотите, в качестве члена данных класса, потому что нет способа узнать тип в объявлении класса, потому что информация о типе определяется только при вызове метода.

public class Snippet<T> {

    private final ResponseHandler<? extends T> var;

    public Snippet(ResponseHandler<? extends T> var) {
        super();
        this.var = var;
    }


    public <U> U execute(ResponseHandler<? extends U> responseHandler) {
        // This class is generic wrt to T, but this method is generice wrt to U.
        // You cannot store the variable passed in here in a data member
        // because the type cannot possible be known at compile time, as it
        // depends on client code calling this method.
        return null;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...