Приведение класса java к классу generi c kotlin изменяет, какая функция вызывается - PullRequest
1 голос
/ 04 апреля 2020

У меня есть следующие kotlin классы:

abstract class Base<I> {
    open fun test(value: I)  {
        Log.i("Base", value.toString());
    }
}
abstract class SubClass : Base<Long>() {
    abstract override fun test(value: Long);
}

И класс java, который наследует от них:

public class SubSubClass extends SubClass {
    @Override
    public void test(final long value) {
        Log.i("SubSubClass", value + "");
    }
}

Теперь следующий код вызывает странное поведение

t.test(123)
(t as Base<Long>).test(123)

>I/SubSubClass: 123    
>I/Base: 123

пока я ожидаю

>I/SubSubClass: 123
>I/SubSubClass: 123

Что здесь происходит? И как это можно исправить? (Примечание: я не могу реально изменить класс java, потому что он генерируется комнатой)

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