Kotlin Companion Возражение нерешенные ссылки - PullRequest
0 голосов
/ 30 мая 2018

У меня есть класс Kotlin с сопутствующим объектом, который видит некоторые поля родительского класса и не видит другие.В Android Studio нет возможности импортировать.

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

Я не хочу создавать эту переменную внутри объекта-компаньона.

Ответы [ 3 ]

0 голосов
/ 30 мая 2018

Вы абсолютно неверны.

Вы не можете получить доступ к членам класса внутри объекта-компаньона вообще.Но вы можете использовать членов компаньона в своем классе.

Если вы увидите байт-код kotlin, вы увидите, что объект Companion компилируется в

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

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

Поскольку Companion static class, он может существовать безкласс, где он объявлен.

Так что в вашем случае вы не можете получить доступ к a и b, потому что, вероятно, они не существуют.

Они также не доступны для вас, но, вероятно, вы обнаружили ошибку IDEи это не дает вам ошибку

0 голосов
/ 31 мая 2018

Android Studio импортировала переменные класса.В импорте я вижу import package.Aa, но не import package.Ab

import package.A.a просто не имеет смысла для свойства класса a, а объект-компаньон не требует import из класса это компаньон в любом случае.Я думаю, что он импортирует из object в другой пакет.

0 голосов
/ 30 мая 2018

Вы не можете получить доступ к переменным экземпляра из статического контекста (компаньон), это то же самое, что и код Java

...