У меня есть (по-видимому) странная проблема. Это могут быть воспроизведены только с несколькими линиями:Добавление вторичного конструктора к родительскому объекту неожиданно влияет на дочерние классы
open class Parent(val map: HashMap<String, Any>) {
// constructor(unusedArgument: Int): this(hashMapOf())
}
class Child: Parent(hashMapOf(Pair("key", "value")))
Он собирает и работает, как ожидается, до тех пор, пока я вторичный конструктор Parent
«S закомментирована. После того, как я положил его обратно, эта ошибка ворса всплывает где Child
«родитель constuctor называется:
Error: None of the following functions can be called with the arguments supplied:
public constructor Parent(map: HashMap) defined in Parent
public constructor Parent(unusedArgument: Int) defined in Parent
ошибка уходит, если какой-либо из этих условий:
- Уточняю дисперсию в
HashMap<String, out Any>
, - Мой вторичный конструктор пуст,
map
объявлен какMap
вместоHashMap
(который я не делаю, потому что для моего мне нужно его реализоватьSerializable
).
Чтобы быть честным, это не имеет для меня никакого смысла. Почему это происходит, только если я добавляю непустой вторичный конструктор к родительскому классу? Какое это имеет отношение к чему-либо? И как именно эти «исправления» исправить?
Спасибо.
Я предполагал, что у меня что-то не хватает, но да, это, безусловно, похоже на ошибку. Спасибо, я думаю, я расскажу об этом. – SqueezyMo