为什么我不能在Kotlin中访问超类的枚举?

PLN*_*ech 5 java enums android subclass kotlin

我正在将Java Android项目转换为Kotlin.

我正在使用API.AI的客户端,它有两个AIConfiguration类:

package ai.api;
public class AIConfiguration implements Cloneable {
     public static enum SupportedLanguages {
         English("en"),
         //...
     }
         //...
}
Run Code Online (Sandbox Code Playgroud)

子类

package ai.api.android;
public class AIConfiguration extends ai.api.AIConfiguration {
    public enum RecognitionEngine {
    //...
}
Run Code Online (Sandbox Code Playgroud)

在我的Java代码中,我正在创建子类的实例,如api指南中所建议的那样:

final AIConfiguration config = new AIConfiguration("TOKEN",
        AIConfiguration.SupportedLanguages.English,
        AIConfiguration.RecognitionEngine.System);
Run Code Online (Sandbox Code Playgroud)

一旦转换为Kotlin,它看起来像这样:

val config = AIConfiguration("TOKEN",
        AIConfiguration.SupportedLanguages.English,
        AIConfiguration.RecognitionEngine.System)
Run Code Online (Sandbox Code Playgroud)

...导致一个Unresolved reference: SupportedLanguages.

  • 我可以更新ai.api.AIConfiguration.SupportedLanguages.English成功编译的引用.
  • 我可以使用import ai.api.AIConfiguration as SuperAIConfiguration和导入超类SuperAIConfiguration.SupportedLanguages,但我宁愿直接在子类上引用枚举.

我不明白:为什么这个引用在Java中有效但在Kotlin中没有?