У меня есть некоторая логика, которая запускается, только когда объект, считываемый из FileInputStream, является картой:
private fun loadEncryptedFile(file: File, password: CharArray) {
var decrypted: ByteArray? = null
ObjectInputStream(FileInputStream(file)).use {
when (val data = it.readObject()) {
is Map<*, *> -> {
if (data.containsKey("iv") && data.containsKey("salt") && data.containsKey("encrypted")) {
val iv = data["iv"]
val salt = data["salt"]
val encrypted = data["encrypted"]
if (iv is ByteArray && salt is ByteArray && encrypted is ByteArray) {
decrypted = Encryption().decrypt(
hashMapOf("iv" to iv, "salt" to salt, "encrypted" to encrypted), password)
}
}
}
}
}
}
Каждый экземпляр переменной «data» выдает ошибку «Вывод типа не выполнен, значение параметра K должно быть упомянуто во входных типах» error.
Однако замена групповых символов этими типами приводит к ошибке «Не удается проверить экземпляр стертых типов». Где компилятор хочет, чтобы я сказал ему, какие типы содержатся в Map?