对于这段代码
class Foo {
var name: String? = null
}
Kotlin编译器生成:
private String name;
public final String getName() { ... }
public final void setName(String name) { ... }
即使属性
name
没有自定义的getter或setter方法。使用@JvmField
注解可以删除冗余的get和set方法。因此,以下代码可以这样改写:class Foo {
@JvmField
var name: String? = null
}
只生成一个字段而没有其他方法。
public String name;
但是有没有办法让Kotlin编译器在整个项目中不为所有属性生成getter和setter?无论是否有注释。也许有一些实验性的编译器标志吗?
我需要这样做是因为我在Kotlin上编写了Android仪表测试。测试apk超过了65k方法计数限制。大约有2k个方法是生成的getter/setter。由于安卓构建系统中存在一些错误,我不能使用proguard或multidex。因此,删除Kotlin合成方法将对我有很大帮助。
minifyEnabled true
和useProguard false
吗? - Mark