我正在尝试创建一个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
}
}
答案 0 :(得分:0)
要创建Product
的新实例,必须使用相应的构造函数Product()
。仅使用Product
会使编译器认为您正在尝试使用它没有的companion object。以下是Kotlin documentation的一部分:
要创建类的实例,我们将构造函数称为常规函数:
val invoice = Invoice() val customer = Customer("Joe Smith")
请注意,Kotlin没有
new
关键字。
答案 1 :(得分:0)
在每次迭代的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])) }
答案 2 :(得分:0)
您必须像这样实例化您的apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: gin-web # Enter deployment name
labels:
app: gin-web
spec:
replicas: 3 #Enter the number of replicas
template:
metadata:
labels:
app: gin-web
tier: service
spec:
imagePullSecrets:
- name: regcred
containers:
- name: gin-web
image: "<your-user>/gin-web:1.0.1" <== Add user here
ports:
- containerPort: 9090
env:
- name: PORT
value: "9090"
# define resource requests and limits
resources:
requests:
memory: "64Mi"
cpu: "125m"
limits: #k8 automatically restart container when hit with these Limtis
memory: "128Mi"
cpu: "250m"
# check if gin-web is alive and healthy
#Check if MS recieve traffic from k*
readinessProbe:
httpGet:
path: /ping
port: 9090
initialDelaySeconds: 5
timeoutSeconds: 5
# check for k8 if container is healthy
livenessProbe:
httpGet:
path: /ping
port: 9090
initialDelaySeconds: 5
timeoutSeconds: 5
类:
Product
请注意与此对应的括号:
val product = Product()
注意:
您没有充分利用Kotlin的潜力。看一下以下重构:
// ...
constructor() {} // empty secondary constructor of Product
// ...
类:
Product
您可以在主要构造函数中声明属性。
for循环
class Product(val productName: String, val productDescription: String)
您可以使用mapIndexed
将项目转换为产品列表。