Удалить геттеры и сеттеры из кода kotlin

Для этого кода

class Foo { var name: String? = null } 

Компилятор kotlin генерирует:

 private String name; public final String getName() { ... } public final void setName(String name) { ... } 

Даже если name свойства не имеет пользовательского getter или setter. Можно удалить избыточные методы get и set с @JvmField аннотации @JvmField . Итак, этот код

 class Foo { @JvmField var name: String? = null } 

генерирует только одно поле без дополнительных методов.

 public String name; 

Но есть ли способ заставить компилятор kotlin не генерировать геттеры и сеттеры для всех свойств всего проекта? Независимо от того, имеет ли он аннотацию или нет. Может быть, некоторые экспериментальные флаги компилятора?

Я хочу, потому что у меня есть тесты на андроид, написанные на котлине. Тест apk превышает предел количества меток 65k. Около 2 тыс. Методов генерируются getters / seters. Я не могу использовать proguard или multidex из-за некоторых ошибок в системе сборки Android. Поэтому удаление котлинских синтетических методов мне очень поможет.

Вы можете просто объявить свои свойства private , у них тогда не будут генерироваться геттеры и сеттеры.

 class Foo { private val foo: String = "foo" } 

Это приведет к созданию следующего класса:

 → javap -classpath build/classes/kotlin/test -p test.Foo Compiled from "Foo.kt" public final class test.Foo { private final java.lang.String foo; public test.Foo(); } 
Intereting Posts
Кинжал инъекции не работает в Котлин Запись строки Android в файл занимает слишком много времени Room – запрос SELECT, получение или дефолт Kotlin генерирует конструктор, который устанавливает значения по умолчанию для нулевых аргументов Тип функции с приемником в Scala Tornadofx tableview синхронизирует две таблицы Kotlin vs. Java: функция вызова с параметром лямбда Что такое файлы .kotlin_builtins и могу ли я их опустить из моих uberjars? Учреждения в Котлине Приложение Kotlin с плагином приложения Gradle rx.Scheduler не может быть предоставлен без @ Provides- или @ Produces-аннотированного метода Dokka – пропустить генератор javadoc для пакетов по умолчанию для Android В Vertx мне нужно перенаправить все HTTP-запросы на один и тот же URL-адрес, но для HTTPS Невозможно скомпилировать функцию расширения с параметром типа reified в Kotlin Как установить делегированное значение свойства путем отражения в котлин?