Атрибут стирается после инициализации – kotlin

Я работаю над проектом Android, используя Kotlin. У меня есть этот код:

val foo = FooClass(this) var colorRunning = FooClass.getProperty("myproperty") 

и класс FooClass :

 class FooClass(val context: Context) : SomeHeritance{ private val styles: HashMap<String, String> = hashMapOf() override fun onCreate(context: Context?) { Log.e("Hash is empty here", this.styles.size.toString()) this.styles.put("a","a") this.styles.put("b","a") this.styles.put("c","a") Log.e("Hash is size is 3", this.styles.size.toString()) } override fun getProperty(someProp: String) { Log.e("Hash is size is 0", this.styles.size.toString()) //I don't understand why return styles[someProp]!! } 

Проблема в том, что styles HashMap инициализируются в методе onCreate , но когда я хочу получить доступ к некоторым значениям из метода getPropery HashMap пуст.

Сделав несколько тестов, я мог проверить, что если я инициализирую HashMap по методу getProperty хэш останется инициализированным.

    Кажется, что ваш onCreate не вызывается при запуске. Поместите init своей Map внутри блока init :

     init { with(styles){ put("a","a") put("b","a") put("c","a") } } 

    Таким образом, вы можете быть уверены, что значения будут помещены на карту, прежде чем обращаться к ней.

    Также убедитесь, что правильно передали null значения в свой getProperty . Вместо !! вы можете выбросить исключение:

     fun getProperty(someProp: String): String = styles[someProp] ?: throw IllegalArgumentException()