访问Kotlin中的父Java类的(静态类)成员

时间:2018-07-25 21:53:42

标签: java kotlin static-classes

我有一个Java类A,该类具有一个静态类作为成员:

class A {
  ...
  static class B {...}
}

我在Java中看到仅执行A.B访问类B的代码。但是,我不能在我的kotlin类中做同样的事情:

import org.mypackage.A
class C {
  ...
  fun doSomething(o: Any) {
    if (o is A.B) { ...}
    ...
  }
}

B执行时,intellij将A.B标记为红色。
我的用例:我有一个要投射到B的对象,例如o is A.B

我做了mvn clean compile,并收到以下错误消息:Cannot access 'B': it is public/*package*/ in 'A'

我的问题:我如何在kotlin课堂中访问B

1 个答案:

答案 0 :(得分:1)

如果C必须导入类A,则它与A和B不在同一个程序包中。 如果是这样,C应该如何看待B类,该类不是公共的,但包级别可见。它在Java中也不起作用。 (在Kotlin中,没有包装级别的可见性修改器,可能会采用“内部”,但这并不相同。那些会互相看到)