Kotlin publi c константа не доступна в другом Java классе? - PullRequest
1 голос
/ 24 апреля 2020

В моем Kotlin классе A у меня определена постоянная c константа, например:

class A {
    companion object {
        val TESTVALUE = "MY TEST VALUE"
    }
    ....
}

А в моем другом Java классе B я пытаюсь использовать ее, например: :

class B {

    private void testFunction() {
        String testValue = A.Companion.TESTVALUE
        // 'or'
        String testValue = A.TESTVALUE

        .....
    }
    ....
}

Я получаю ошибку: «TESTVALUE имеет частный доступ»

enter image description here

Ответы [ 3 ]

3 голосов
/ 24 апреля 2020

Чтобы получить доступ к полям сопутствующих объектов из класса Kotlin в классе Java, необходимо предоставить аннотацию для Java чтения соответственно. Это примечание @JvmField.

Как показано в Kotlin документах здесь

class A {
   companion object {
      @JvmField
      val TESTVALUE = "MY TEST VALUE"
   }
}
1 голос
/ 24 апреля 2020

JvmField. Указывает компилятору Kotlin не создавать геттеры / сеттеры для этого свойства и выставлять его как поле. Для получения дополнительной информации см. Документацию по языку Kotlin.

Убедитесь, что вы также ссылаетесь на поля, созданные из нестати c контекста.

A. java

 class A {

    private void testFunction() {
        String testValue = B.TESTVALUE;
        System.out.println(testValue);
    }
};

B.kt

 class B {
     companion object {
         @kotlin.jvm.JvmField

         val TESTVALUE = "MY TEST VALUE"
     } }
1 голос
/ 24 апреля 2020
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...