class MyClass {
// Функция для получения запроса ApolloQueryCall из Query
fun getCallFrom(query: Query<*, *, *>): ApolloQueryCall<out Any?> = apolloClient.query(query)
// Функция для тестирования
fun test() {
// Первый запрос с ожиданием ответа типа com.apollographql.apollo.api.Response<MyTestQuery.Data>
val response1: com.apollographql.apollo.api.Response<MyTestQuery.Data> = apolloClient.query(
MyTestQuery("test")
).await()
// Второй запрос, использующий вашу общую функцию
// Проблема в том, что вам нужно получить тот же тип результата, что и response1
val response2: com.apollographql.apollo.api.Response<out Any?> = getCallFrom(
MyTestQuery("test")
).await()
}
}
该函数有test()
两个响应(response1
和response2
),但返回类型有所不同。对于第一个我使用的appoloClient.query
,对于第二个我使用我的一般功能getCallFrom
。
我需要从通用函数中获得与response1
(com.apollographql.apollo.api.Response<MyTestQuery.Data>) 中相同类型的结果。
我尝试了不同的传递类型的方法(而不是 *),但它不起作用。
我究竟做错了什么?
显然你需要参数化
getCallFrom
. 在关键字后面的尖括号中指定类型参数fun
。你会得到这样的东西: