【问题标题】:Kotlin: inherit from a nested Java classKotlin:继承自嵌套的 Java 类
【发布时间】:2018-11-14 23:23:25
【问题描述】:

我在 .java 文件中有这些 Java 类:

public class BaseOuter
{
    public class BaseInner
    {
    }
}

我在 .kt 文件中有这些 Kotlin 类:

class DerivedOuter : BaseOuter()
{
    class DerivedInner : BaseOuter.BaseInner()
    {
    }
}

Android Studio 中的这段 Kotlin 代码给了我一个“未解析的引用:BaseInner”错误。所以我可以从 BaseOuter 类继承,但从 Java 的 BaseOuter.BaseInner 派生在语法上是不正确的(但如果我尝试从 Kotlin 类继承,我不会出错)。

不知何故,我无法在谷歌上搜索相同的示例或问题。

【问题讨论】:

  • 一方面,这不起作用,因为您在 Java 中有一个内部类,但在 Kotlin 中有一个静态成员类。要想让一个类在 Kotlin 中成为 inner,您需要用 inner 关键字标记它:inner class DerivedInner ...
  • @ErwinBolwidt 谢谢
  • 不客气。我不认为它会解决它(因为错误说它无法解决听起来不像我提到的问题的参考)而且我没有时间尝试它。因此只有一条评论

标签: java inheritance kotlin nested


【解决方案1】:

在 Kotlin 中相当于 Java 的非静态嵌套类是内部类。

要使您的代码正常工作,您需要使用inner 关键字:

class DerivedOuter() : BaseOuter() {
    inner class DerivedInner : BaseOuter.BaseInner() {
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    相关资源
    最近更新 更多