gpt4 book ai didi

android - 从 kotlin 代码中删除 getter 和 setter

转载 作者:太空狗 更新时间:2023-10-29 13:06:24 25 4
gpt4 key购买 nike

对于这段代码

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 的方法是生成 getters/setters。由于 android 构建系统中的一些错误,我无法使用 proguard 或 multidex。所以去除 kotlin 合成方法会对我有很大帮助。

最佳答案

您可以简单地将您的属性声明为private,然后它们将不会生成 getter 和 setter。

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();
}

关于android - 从 kotlin 代码中删除 getter 和 setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47445518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com