Можем ли мы добавить гиперссылку на свойство описания отчета в отчете SSRS

Вы помещаете функцию в «объект-компаньон».

Таким образом, java-код выглядит следующим образом:

class Foo {
  public static int a() { return 1; }
}

станет

class Foo {
  companion object {
     fun a() : Int = 1
  }
}

Затем вы можете использовать его из кода Котлина как

Foo.a();

. Но из кода Java вам нужно будет называть его как

Foo.Companion.a();

(который также работает из Kotlin .)

Если вам не нравится указывать бит Companion, вы можете либо добавить аннотацию @JvmStatic, либо назвать свой сопутствующий класс.

Из docs :

Объекты Companion

Объявление объекта внутри класса может быть помечено ключевым словом companion:

class MyClass {
   companion object Factory {
       fun create(): MyClass = MyClass()
   }
}

Участники из сопутствующего объекта можно вызвать, просто используя имя класса в качестве определителя:

val instance = MyClass.create()

...

Однако на JVM вы можете создавать члены сопутствующих объектов как реальные статические методы и поля, если вы используете аннотацию @JvmStatic. Подробнее см. Раздел «Интерфейс взаимодействия с Java».

Добавление аннотации @JvmStatic выглядит так:

class Foo {
  companion object {
    @JvmStatic
    fun a() : Int = 1;
  }
}

, а затем оно будет существовать как реальная статическая функция Java , доступный как из Java, так и из Kotlin как Foo.a().

Если это просто не нравится для имени Companion, вы также можете указать явное имя для объекта-компаньона:

class Foo {
  companion object Blah {
    fun a() : Int = 1;
  }
}

, который позволит вам позвонить это от Котлина таким же образом, но от java как Foo.Blah.a() (который также будет работать в Котлине).

0
задан user1751845 28 March 2019 в 06:00
поделиться