Это с implementation 'org.json:json:20180813'
Итак, у меня есть класс User
, который позволяет переводить себя в строку json для сохранения:
data class User(override val name:String, override val creds:ICredentials) : IUser, isEncodable<IUser>{
override val isLoggedIn by lazy { creds is Credentials.Valid }
override fun encode():String{
val credsEncoding = creds.encode()
return JSONStringer().withObject { it
.key("type").value(this::class.java.name)
.key("name").value(name)
.key("creds").value(credsEncoding)
}.toString()
}
}
где withObject
- функция расширения:
fun JSONWriter.withObject(content:(JSONWriter)->JSONWriter) = content(`object`() as JSONWriter).endObject()
Это, кажется, компилируется и прекрасно работает.
Однако AndroidStudio помечает его красным и заявляет
Неразрешенная ссылка
Ни один из следующих кандидатов не применим из-за несоответствия типов приемников
public fun JSONWriter.withObject(content:(JSONWriter)->JSONWriter):JSONWriter! defined in [...]`
Если я попытаюсь «обмануть» и напишу это как
(JSONStringer() as JSONWriter).withObject { it
...
}
ошибка становится предупреждением, что
Этот акт никогда не может быть успешным.
Но, видимо, так и есть.
Почему это? И как мне избавиться от этой "ошибки"?