java - 访问 kotlin 中父 java 类的(静态类)成员

标签 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) { ...}
    ...
  }
}

(当我执行 A.B 时,intellij 将 B 标记为红色。
我的用例:我有一个想要转换为 B 的对象,例如 o is A.B

我执行了mvn cleancompile并收到此错误:无法访问“B”:它是“A”中的public/*package*/

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

最佳答案

如果 C 必须导入类 A,那么它与 A 和 B 不在同一个包中。 如果是这样的话,C 应该如何看待非公共(public)但包级别可见的类 B。它在 Java 中也不起作用。 (在 Kotlin 中,没有包级可见性修饰符,人们可能会采用“内部”,但这不一样。它们会互相看到)

关于java - 访问 kotlin 中父 java 类的(静态类)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51528223/

相关文章:

java - 没有找到适合 sort(int[],<anonymous Comparator<Integer>>) 的方法

android - 图像存在,不为空,但我得到一个 NullPointerException

.net - 静态类/成员在哪里分配?

java - 如何在不使用 .parse() 的情况下解析 Java 中的字符串?

Java Servlet SQL 表

kotlin - HashMap 错误 - containsKey, get

安卓安全异常 : uid xxxxx cannot explicitly add accounts

c# - 枚举和使用带有常量的静态类有什么区别?

c# - 为什么我不能访问静态类中的公共(public)属性字段

java - derby 中的复杂 LIKE 表达式 (Java DB)