我有一个已经转换为Kotlin的Java接口类。在转换时,它会在使用getter和setter时在其他文件上创建大量错误。
Java接口类:
public interface ValueFormElement extends BaseElement {
Pair<Boolean, Hashtable<String,String>> getValue();
String getName();
void setName(String name);
void setValue(String value);
}
在转换时,它会删除getter并在其他类中使用getter。这是生成的Kotlin类
interface ValueFormElement : BaseElement {
val value: Pair<Boolean, Hashtable<String, String>>
var name: String
fun setValue(value: String)
}
如果有人有一种方法可以实现或干净利落地使用get和set而不影响其余的代码,请告诉我或指导我。
使用var
,将生成get / set方法以在Java中使用。但是对于val
,只提供了一个get方法(因为val意味着只读)。您可以合并到两个var
s以匹配Java实现:
interface ValueFormElement : BaseElement {
var value: Pair<Boolean, Hashtable<String, String>>
var name: String
}
使用此Kotlin接口的Java代码仍会看到getter和setter,与之前相同,因此它们不会受到影响。只有Kotlin代码。如果你现在还没有准备好修复它们,我根本不打算将界面转换为Kotlin。
虽然可以写
fun getName(): String
在Kotlin界面中,它将使它比Java版本更少可用。也就是说,Kotlin不会让你写x.value
或x.name = ...
。