Как определить arralist глобально в kotlin

Для java-класса в android мы использовали для объявления массива int в верхней части Activity, например int[] intarray; и создать объект, когда это необходимо, с помощью intArray = new Int (size).

Я знаю, что в kotlin для использования массива мне нужно сделать что-то вроде

 val numbers: IntArray = intArrayOf(10, 20, 30, 40, 50) 

То, что я не могу сделать, – объявить объект глобально, т. Е.

 val numbers: IntArray 

В kotlin мы объявляем переменные, такие как val a: Int = 1 Но, как показано в основном учебнике по синтаксису, он не позволяет мне объявлять переменную как val c: Int а затем инициализировать ее при необходимости. Это дает мне ошибку

Имущество должно быть инициализировано или абстрактно

Я ошибаюсь с частью декларации. Поскольку это не позволяет мне определять только val numbers: IntArray . Может кто-нибудь сказать мне, где я ошибаюсь?

Вы не можете определить не инициализированную постоянную переменную. Измените следующую строку:

 val numbers: IntArray 

этим:

 var numbers: IntArray? = null 

Итак, вы можете изменить значение переменной числа …

Значение val является значением только для чтения, поэтому его нужно инициализировать немедленно, потому что он должен быть установлен только один раз. Если вы не можете сразу инициализировать массив при создании Activity , вы должны сделать его var .

Это все равно нужно инициализировать: вы можете, например, инициализировать его пустым массивом в качестве значения по умолчанию.

 var numbers: IntArray = intArrayOf() 

Или вы можете пометить его lateinit словом lateinit чтобы указать, что вам еще нечего им назначать, но вы знаете, что он будет инициализирован до того, как вы впервые его используете, и вы берете на себя ответственность за это:

 lateinit var numbers: IntArray 

Наконец, вы можете сделать его NULL IntArray и инициализировать его null . Здесь компилятор избавит вас от доступа к нему, когда он равен null , но каждый раз, когда вы его открываете, вы будете вынуждены иметь дело с тем, что он может быть null .

 var numbers: IntArray? = null 

val – неизменные переменные данных (только для чтения). Вместо этого используйте var . Для получения дополнительной информации прочитайте определение локальной переменной

Так что вам нужно:

 var numbers: IntArray? = null // This says numbers variable is nullable 

и вы можете инициализировать его, когда захотите.