Прежде всего, один из методов расширения (fromInt ()) не является настоящим методом конвертера.Для этого метода Room ожидает метод в виде (в java):
static Status fromInt(int code){...}
, однако компилятор Kotlin сгенерирует (в java) что-то вроде
static Status fromInt(Status obj){...}
Room не будет знатьчто делать с этим методом, который нужно преобразовать из int в базе данных в ваше поле Status.
Во-вторых, в их текущей форме эти два метода расширения довольно бесполезны.Один из них является псевдонимом для Status.ACTIVE.code
, а другой просто возвращает экземпляр, для которого вызывается.
Вы не можете использовать эти методы для интерфейса TypeConverters, поскольку этот интерфейс ожидает ссылку на класс, который группирует требуемую статическую переменную.методы.В kotlin вы не можете получить доступ к java-классу (содержащему методы), который будет сгенерирован компилятором kotlin, поэтому вы не можете использовать его в базе данных.
Если вы хотите сохранить текущие методы расширения, нотакже создайте необходимые методы преобразователей типов, которые вы могли бы использовать по некоторой косвенности, как показано ниже: