Здесь наверное даже больше не в мутабельности дело, а в том, что вызов через эти скобки [], это просто сокращение от вызова метода get И получается, что смарткаст не может работать, потому что это метод
Здесь наверное даже больше не в мутабельности дело, а в том, что вызов через эти скобки [], это просто сокращение от вызова метода get И получается, что смарткаст не может работать, потому что это метод
И у нас есть правильный ответ. :) kotlin.HashMap - это typealias на java.HashMap. А внутри джавовских классов никаких контрактов, конечно же, нет.
И у нас есть правильный ответ. :) kotlin.HashMap - это typealias на java.HashMap. А внутри джавовских классов никаких контрактов, конечно же, нет.
так не в этом дело ты же можешь сделать свой класс с оператором get который будет всегда возвращать константу и компилятор всё равно не сделает смарткаст будь то hashmap или что либо ещё потому что это просто 2 вызова метода
так не в этом дело ты же можешь сделать свой класс с оператором get который будет всегда возвращать константу и компилятор всё равно не сделает смарткаст будь то hashmap или что либо ещё потому что это просто 2 вызова метода
Да, таки верно. Контракты пока не умеют смотреть "в глубь" объектов.