Kotlin Companion Objection 未解决的引用

Kotlin Companion Objection unresolved references

我有一个带有伴随对象的 Kotlin class,它可以看到父 class 的某些字段,但看不到其他字段。 Android Studio 中没有导入选项。

class A{
   var a = 1
   var b = 2
       companion object {
            a += 1// visible and imported
            b += 1// unresolved reference
       }
}

我不想在伴随对象中创建这个变量。

您不能从静态上下文(伴侣)访问实例变量,这与 Java 代码

相同

你完全错了。

您根本无法访问伴生对象中 class 的成员。但是您可以在 class.

中使用伙伴的成员

如果您查看 kotlin 字节码,您会看到 Companion 对象编译为

   public static final class Companion {
      private Companion() {
      }

      // $FF: synthetic method
      public Companion(DefaultConstructorMarker $constructor_marker) {
         this();
      }
   }

由于 Companion 是 static class,它可以在没有声明它的 class 的情况下存在。

因此,在您的情况下,您无法访问 a 和 b,因为它们可能不存在。

您也无法访问它们,但可能您遇到了 IDE 错误并且它不会给您错误

Android Studio imported A class variables. In imports i see import package.A.a, but not import package.A.b

import package.A.a 对于 class 属性 a 根本没有意义,并且伴随对象不需要 import 来自 class 无论如何它都是伴侣。我最好的猜测是它是从另一个包中的 object 导入的。