Ron*_*res 2 oop properties kotlin
我在这个网站上看到了许多不同的类似问题引用这个问题,但所有的目的都是从类本身内部创建属性。我已经查看 kotlin 文档有一段时间了,似乎找不到解决方案。我正在尝试接受一个随机对象并为其添加一个属性。
//create this object
class random(val name : String?){
}
var obj = random("bob")
obj.newattribute :Int = 2 //cant do this in this lang
Run Code Online (Sandbox Code Playgroud)
在 Kotlin 中,您不能(也不应该)在运行时更改实例的“形状”,因为类型系统是为了保护用户并为您正在操作的值提供保证。
话虽这么说,如果您需要的是键值存储,您可以在其中放置键值对并通过键访问值,那么您应该使用该MutableMap接口的实现。
例如,HashMap是该接口的实现:
val myMap = HashMap<String, Int>()
myMap["newattribute"] = 2
println(myMap["newAttribute"]) // prints "2"
Run Code Online (Sandbox Code Playgroud)
请注意,键和值的类型已明确定义。给定Map只能处理相同类型的键(这里是Strings)和相同类型的值(这里是Ints)。这意味着您无法使用myMap["stringProperty"] = "text"上面示例中定义的地图。
如果您确实想要更通用的东西(特别是对于值),则需要使用更广泛的类型作为映射中的“值”类型。例如,使用MutableMap<String, Any>替代,以便值可以是任何非空类型:
val myMap = HashMap<String, Any>()
myMap["intAttr"] = 42
myMap["strAttr"] = "text"
println(myMap["intAttr"]) // prints "42"
println(myMap["strAttr"]) // prints "text"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4016 次 |
| 最近记录: |