Удалите неконтролируемое приведение Rx Java на комбайн. Последнее предупреждение, не подавляя их. - PullRequest
0 голосов
/ 01 марта 2020

Я создал метод, который делает несколько вызовов с модификацией и возвращает список продуктов, используя оператор combLatest rx java, затем я использую функцию map, чтобы получить только проанализированные тела ответа.

Метод работает, как и ожидалось, но я получил 2 предупреждения о непроверенных приведениях на Android Studio.

Unchecked cast: Any! to Response<Product>

и

Unchecked cast: List<Product?> to List<Product>

Какой правильный путь к избавиться от этих 2 непроверенных предупреждений о сотворении? Я пытался решить эту проблему несколькими способами, но безуспешно.

Мой метод примерно такой:

    private fun getProductList(): Observable<List<Product>> {
        val retrofitApiCalls = listOf(
            Observable.just(
                Response.success(
                    Product("Potato")
                )
            ),
            Observable.just(
                Response.success(
                    Product("Banana")
                )
            )
        )

        return Observable.combineLatest(retrofitApiCalls) {
            return@combineLatest it.map { response -> (response as Response<Product>).body() } as List<Product>
        }
    }

Android Studio Unchecked приведена ошибка print

Ответы [ 2 ]

0 голосов
/ 02 марта 2020

Похоже, ваш код упрощается до

private fun getProductList(): Observable<List<Product>> = 
    Observable.just(
        listOf(
            Product("Potato"),
            Product("Banana")
        )
    )

Если это не так, предоставленный вами пример кода неполон.

0 голосов
/ 01 марта 2020
 return@combineLatest it.filter { it is Response<Product> }
                        .map { it.body() }.toList<Product>()

Он будет автоматически приведен к List<Product>

...