Kotlin:如何处理 'protected' 属性暴露其内部返回类型

标签 kotlin inheritance class-visibility

拥有一个基类,我希望它及其后代类仅在内部可见:

internal abstract class BaseClass
internal open class Class_A: BaseClass()
internal open class Class_B: Class_A()
Class_A列表的地方(其中可能还包含 Class_B),希望对其进行保护以使其自己的后代类访问此列表
open class User {
    // got error: 'protected' property exposes its internal return type" 
    protected var class_A_list: List<Class_A>? = null
}

class User_descendent: User() {
    // can access the class_A_list
}
如何让后代类访问某个“内部”类的实例?

最佳答案

上述错误正在保护 internal由不在内部类的同一模块中的其他类访问的类。如果允许,则不能保证类 User只会被同一模块中的类继承。
所以如果你想制作 class_A_list protected ,您必须制作 User类(class) internal .通过这样做,它将保证,User将由同一模块中的类继承。以下应该没问题:

internal open class User {
   protected var class_A_list: List<Class_A>? = null
}

关于Kotlin:如何处理 'protected' 属性暴露其内部返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62503790/

相关文章:

java - 从单独的类文件访问公共(public)静态类的状态

kotlin - 为什么打印 IntArray 显示的是地址而不是数组的值?

尽管在 list 中提到了 android.app.Application,但仍无法转换

java - 如何限制那个子类不能泛型?

database - 在数据库中使用继承的优点和缺点是什么

java - 包装和可见性

c++ - 在私有(private)嵌套类上使用 using 指令

Android:如何在 Firestore 中写入字符串数组列表

Kotlin Delegation如何从委托(delegate)对象访问类属性

vba - 在 VBA 中实现接口(interface)的类模块中的其他方法