代码之家  ›  专栏  ›  技术社区  ›  wbk727

创建ArrayList时出现的分类器问题

  •  0
  • wbk727  · 技术社区  · 6 年前

    for-loop 要在中生成项目,请执行以下操作: ArrayList ,但我不确定在这种情况下为什么会出现“伴生对象”错误。 Product 在里面 val product = Product 返回一个错误:

    分类器没有伴生对象,因此必须在此处初始化

    内部碎片

        val items = resources.getStringArray(R.array.product_names)
        val itemDescriptions = resources.getStringArray(R.array.product_descriptions)
        for (n in items.indices) {
            val product = Product
            product.productName(items[n])
            product.productDescription(itemDescriptions[n])
            productList.add(product)
        }
    

    产品类别

    class Product {
    
        var productName: String? = null
        var productDescription: String? = null
    
        constructor() {}
    
        constructor(productName: String, productDescription: String) {
            this.productName = productName
            this.productDescription = productDescription
        }
    }
    
    3 回复  |  直到 6 年前
        1
  •  0
  •   s1m0nw1    6 年前

    创建的新实例的步骤 Product ,则必须使用相应的构造函数 Product() 产品 使编译器认为您正在尝试使用其 companion object documentation :

    要创建类的实例,我们调用构造函数,就像调用常规函数一样:

    val invoice = Invoice()
    
    val customer = Customer("Joe Smith")
    

    请注意,Kotlin没有 new

        2
  •  0
  •   forpas    6 年前

    内部 for 在每次迭代中循环,您必须“创建”一个 Product 对象,并将数组中的相应项传递给构造函数 items itemDescriptions 然后将此对象添加到列表中:

    val items = resources.getStringArray(R.array.product_names)
    val itemDescriptions = resources.getStringArray(R.array.product_descriptions)
    for (n in items.indices) {
        val product = Product(items[n], itemDescriptions[n])
        productList.add(product)
    }
    

    items.indices.forEach { productList.add(Product(items[it], itemDescriptions[it])) }
    
        3
  •  0
  •   Willi Mentzel user670265    6 年前

    Product 像这样的课程:

    val product = Product()
    

    请注意与此对应的括号:

    // ...
    constructor() {} // empty secondary constructor of Product
    // ...
    

    注:

    1. 产品 类别:

      class Product(val productName: String, val productDescription: String)
      

    1. val productList = items.mapIndexed { index, item ->
          Product(item, itemDescriptions[index])
      }
      

    您可以使用将项目转换为产品列表 mapIndexed .