关于这样的代码示例:
var someProperty: String = "defaultValue"
get() = field
set(value) { field = value }
是否必须在属性声明的正下方编写get / set方法?如果我在属性声明和get / set-definition之间有东西,那将不起作用?
嵌套只是为了更好地阅读还是语法的一部分?
因为您正在使用var及其公共部分
get() = field
set(value) { field = value }
是多余的,并且Kotlin编译器应对此发出警报。
另外,您会看到,将代码编译为带有或不带有setter和getter的kotlin字节码时,结果是相同的
@Metadata(
mv = {1, 4, 1},
bv = {1, 0, 3},
k = 1,
d1 = {"\u0000\u0014\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0002\n\u0002\u0010\u000e\n\u0002\b\u0005\u0018\u00002\u00020\u0001B\u0005¢\u0006\u0002\u0010\u0002R\u001a\u0010\u0003\u001a\u00020\u0004X\u0086\u000e¢\u0006\u000e\n\u0000\u001a\u0004\b\u0005\u0010\u0006\"\u0004\b\u0007\u0010\b¨\u0006\t"},
d2 = {"Lorg/example/Fo;", "", "()V", "someProperty", "", "getSomeProperty", "()Ljava/lang/String;", "setSomeProperty", "(Ljava/lang/String;)V", "stream"}
)
public final class Fo {
@NotNull
private String someProperty = "defaultValue";
@NotNull
public final String getSomeProperty() {
return this.someProperty;
}
public final void setSomeProperty(@NotNull String var1) {
Intrinsics.checkNotNullParameter(var1, "<set-?>");
this.someProperty = var1;
}
}
最后是订单问题,用于声明属性的完整语法为
var <propertyName>[: <PropertyType>] [= <property_initializer>]
[<getter>]
[<setter>]
所以你不能在声明部分之间添加任何东西
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句