Kotlin Companion Objection未解决的参考文献

时间:2018-05-30 14:14:48

标签: android kotlin companion-object

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

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

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

3 个答案:

答案 0 :(得分:2)

你完全没错。

您根本无法访问随播对象内的类成员。但是你可以在班上使用同伴的成员。

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

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

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

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

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

它们也不适合您,但可能是您的IDE错误并且它不会给您错误

答案 1 :(得分:0)

您无法从静态上下文(随播广告)访问实例变量,这与Java代码

相同

答案 2 :(得分:0)

  Android Studio导入了A类变量。在导入中,我看到import package.A.a,但不是import package.A.b

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