如何在Kotlin中删除\删除对象?

时间:2019-09-06 16:32:54

标签: kotlin

我有课和两个对象。我想删除第一个对象。如何删除它?

我尝试只是delete()(我在kotlinlangcom上找到了它),但是它不起作用。我的灯泡是红色的,建议使用“创建成员函数Person.delete”,“重命名参考”和“创建扩展函数Person.delete”。

fun main() {
    // copy object in object
    data class Person (var name: String = "Orig", var type: String = "piece",
                       var age: Int = 18, var high: Double = 25.7, var code: Int = 1522)
    {
        var info: String = "0"
        get() = "Name: $name Age: $age Type: $type High: $high Code: $code"
    }
    val ann: Person = Person("Ann", "man", 10, 0.5, 1408) // 1st object with some properties
    var bob: Person = Person("Bob", "girl", 20, 15.0, 1239) // 2nd object without prop
    println(ann.info)// props 1st object
    println(bob.info)// props 2nd object
    print(" ---- ")
    bob = ann.copy() // copy 1st in 2nd
    println("Bob has Anns' props: ")
    print("final " + bob.info) // new props 2nd object
    bob.delete()

}

1 个答案:

答案 0 :(得分:0)

您无需像删除其他语言(如c ++ / c等)那样删除对象... JVM的垃圾收集器正在处理它(如果您将kotlin与jvm一起使用) 您需要知道的是在对象上不保留任何引用

因此,如果您有一个放置对象的集合(列表,地图...),并且该集合是模型或其他类似东西的长期存在类的属性,则还必须将其淘汰。多数民众赞成在kotlin内陷入麻烦的唯一可能性是,将引用添加到由静态或长期存在的对象引用的集合中。

在一个函数中,不需要删除withing创建的对象。 请记住,完成该方法后,垃圾收集器(GC)不会立即运行。根据对象的年龄和垃圾收集器本身,有不同的策略。如果您想了解GC的实际应用,此工具(visualgc)https://www.oracle.com/technetwork/java/visualgc-136680.html具有一些不错的可视化效果。

您还可以在这里找到有关垃圾收集的更多详细信息:https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html