在 Kotlin 中深度复制抽象类

问题描述 投票:0回答:1

我想复制以下课程:

abstract class AbstractEnvironment : Environment {}

我尝试使用内置的 Kotlin copy() 方法来完成此操作,如下所示:

class Test(
    val env: AbstractEnvironment
) {
    private var envCopy: AbstractEnvironment = env.copy()

这不起作用,因为复制方法仅适用于数据类。 我的设备的环境类需要保持抽象。

如何执行深复制?

java android kotlin class copy
1个回答
0
投票

例如,您可以在 AbstractEnvironment 中创建一个函数来执行其属性的深层复制:

abstract class AbstractEnvironment : Environment {
    abstract fun copy(): AbstractEnvironment // Abstract method for deep copy
}

class Test(val env: AbstractEnvironment) {
    private var envCopy: AbstractEnvironment = env.copy()

    // Function to perform deep copy
    private fun deepCopyEnvironment(original: AbstractEnvironment): AbstractEnvironment {
        // Implement deep copy logic here
        // Create a new instance of AbstractEnvironment and copy its properties

        // For example:
        val copy = object : AbstractEnvironment() {
            // Override necessary methods/properties and copy their values
            // Example:
            override fun someMethod() {
                // Copy method implementation
            }
        }

        // Copy other properties as needed
        // copy.property = original.property

        return copy
    }

    init {
        envCopy = deepCopyEnvironment(env)
    }
}

此方法涉及创建一个函数 deepCopyEnvironment,该函数手动构造 AbstractEnvironment 的新实例并根据需要复制其属性。您需要重写用于复制的匿名类中的抽象方法或属性。

© www.soinside.com 2019 - 2024. All rights reserved.