2013-06-07 4 views
4

У меня есть пара классов (расширяющих AsyncTaskLoader), которые в основном делают то же самое: сделайте вызов REST и создайте POJO из ответа с Gson. Теперь я подумал, что было бы более элегантно иметь только один класс (пусть он принимает некоторые параметры) и просто сказать, какой объект я ожидаю вернуться. В качестве параметра я дал бы класс POJO, что я ожидаю, чтобы вернуться, потому что он используется в десериализации Gson какГибкий тип возвращаемого метода

Imprint impr = gson.fromJson(responseString, Imprint.class); 

Что бы тип возвращаемого класса/метода? Я подумал о том, чтобы позволить ему вернуть java.lang.Object, а затем опустить его на объект типа POJO, который я ожидаю, но есть ли лучшая возможность?

ответ

6

Использование дженериков. Примером метода подписи может выглядеть

public <T> T callService(String parameters, Class<T> clazz) 
-1

вы можете использовать Уве решение, или просто вернуть общий класс (здесь AsyncTask), а затем сделать бросок, или даже возвращать объект, и сделать бросок (более опасно)

+0

возвращение простого родового класса почти так же плохо, как возвращение объекта – Jerome

+0

здесь я говорю о возвращении AsyncTaskLoader, который не является простым родовым, но довольно точным. по его словам, единственные различия между каждым дочерним классом очень малы, поэтому не так много рисков. – wazaminator