【问题标题】:Kotlin: share variable in abstract class between extending classes [closed]Kotlin:在扩展类之间共享抽象类中的变量[关闭]
【发布时间】:2023-03-20 13:45:01
【问题描述】:

我有一个抽象类 A,类 B 和 C 正在扩展。 我想在 A 类中有一个静态变量,我可以从 B 和 C 获取和设置它,以便它们访问共享值。 目前,使用 getter 和 setter 的 B 和 C 都有自己的变量实例。

老实说,我不太在乎实践的好坏,我只是想让它以某种方式发挥作用。

【问题讨论】:

    标签: java kotlin inheritance architecture abstract


    【解决方案1】:

    可以使用companion object模拟静态变量:

    abstract class A {
    
        companion object {
            var staticVariable: Int = 0
        }
    }
    
    class B : A() {
        fun updateStaticVariable() {
            staticVariable = 1
        }
    }
    
    class C : A() {
        fun updateStaticVariable() {
            staticVariable = 2
        }
    }
    

    从其他地方访问它:

    val sv = A.staticVariable
    if (sv == 0) {
        //...
    }
    

    【讨论】:

    • 一个更简洁的替代方案是顶级变量——定义在同一个文件中但在任何class定义之外。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多