我使用IntelliJ将Java代码转换为Kotlin。
我的Java类:
public class Test {
private String mName;
public String getName() {
return mName;
}
public void setName(String name) {
this.mName = name.trim();
}
}
转换的Kotlin类:
class Test {
var name: String? = null
private set
fun setName(name: String) {
this.name = name.trim { it <= ' ' }
}
}
有没有办法将属性名称保留为“mName”?
=
附言:非常感谢@Sam的导游。
在转换后手动编辑Kotlin代码对我来说似乎不是一个好的选择,因为有很多这样的字段。我觉得在我的例子中,这是一个独立的项目(不是公共库),在将代码转换为kotlin之前,重构jave中的getter和setter名称会更容易,如下所示:
public class Test {
private String mName;
public String getMName() {
return mName;
}
public void setMName(String name) {
this.mName = name.trim();
}
}
然后,转换后的Kotlin代码变为:
class Test {
var mName: String? = null
private set
fun setMName(name: String) {
mName = name.trim { it <= ' ' }
}
}
1条答案
按热度按时间vsdwdz231#
实际上,转换后的Kotlin类可以进一步优化,如下所示:
这是在利用一个隐式的支持字段。如果您想让它更明确,并自己命名Backup字段,您也可以使用Backding属性来实现:
文档提到,在JVM上,“使用默认的getter和setter访问私有属性是优化的,以避免函数调用开销。”实际上,这意味着不会为
mName
属性生成getter和setter,因此您只会得到一个名为mName
的私有字段。从Java的Angular 来看,我的第二个Kotlin示例看起来与您问题中的Java类相同。