Аргумент типа, необходимый для класса при расширении в kotlin - PullRequest
0 голосов
/ 28 мая 2018

Так что моя проблема проста, в Java, если у меня есть базовый класс, как это:

BaseViewModel.Java

public abstract class BaseViewModel<N> extends ViewModel {

Я могу расширить этот класс на другие классы без определения универсальногоаргумент N, например:

public class BaseFragment<V extends BaseViewModel> { //this is fine

, но при этом подходе kotlin выдает ошибку, запрашивая общее определение.

class BaseFragment<V: BaseViewModel>: Fragment() {// one type argument expected

как этого избежать?

1 Ответ

0 голосов
/ 28 мая 2018

Kotlin не позволяет использовать необработанные типы, как это делает Java.Таким образом, вы должны указать некоторый тип для вашего V : BaseViewModel:

class BaseFragment<V: BaseViewModel<Any>>: Fragment() {

Это эквивалентно для вашего кода Java, потому что V extends BaseViewModel в основном означает V extends BaseViewModel<Object>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...