@NovichokIvanovich
начинающий программист

Как импортировать собственный класс в котлин?

есть класс Drink
package com.example.starbuuz
class Drink(name:String, description:String, imageResourceId: Int) {
    private var name:String = name
    private var description:String = description
    private var imageResourceId: Int = imageResourceId
    public var drinks:Array<Drink> = arrayOf(
        Drink("Latte", "A coupleof espresso shots with steamed milk", R.drawable.latte),
        Drink("Cappuccino", "Espresso, hot milk, and a steamed milk foam", R.drawable.cappuccino),
        Drink("Filter","Heighest quality beans roasted and brewed fresh",R.drawable.filter)
        )
    public val getName:String
    get() = name
    public val getDescription:String
    get() = description
    public val getImageResourceId:Int
    get() = imageResourceId
}

который хочу импортировать в класс DrinkCategoryActivity
package com.example.starbuuz

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.ArrayAdapter
import com.example.starbuuz.Drink
class DrinkCategoryActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_drink_category)
        val listArrayAdapter: ArrayAdapter<Drink> = ArrayAdapter<Drink>(this,
            android.R.layout.simple_list_item_1,
            Drink.drinks
        )
    }
}

при обращении к переменной класса Drink.drinks подчеркивается красным слово drinks
это код из книги по Head_First._Programmirovanie_dlya_Android страница 309
результат
spoiler

5ea96d7feb077520830541.png
  • Вопрос задан
  • 288 просмотров
Решения вопроса 1
@WaterSmith
Android-разработчик. Java, Kotlin
Как минимум у вас не создан экземпляр класса Drink, вы пытаетесь работать с полем drinks, как работали бы со статик-полем в Java. В Котлине статиков нет. Подробности например тут: https://habr.com/ru/company/funcorp/blog/430836/

А еще, мне кажется что этот код сожрет всю память и зависнет. Потому что при создании первого Drink объекты Drink начнут создаваться рекурсивно. Потому что при создании каждого, создаются еще три, каждый из которых создаст по три, и так далее.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы