在我的项目中,我有一个委托(用Java编写)用于通过RPC获取数据,大多数方法以'get'开头,有些方法不需要参数,因此Kotlin建议用属性访问语法替换对它们的调用。他们没有实现属性语义(好吧,因为他们执行网络请求),所以我想默认禁止所有这些方法的所有检查,而不是代替每次调用(是的,我知道{{ 1}}块的注释,它与我需要的完全相反)。
除了重命名它们之外是否有任何解决方案,所以它们不会以'get'开头?
答案 0 :(得分:3)
我想您使用的是IntelliJ IDEA。
您可以转到Preferences, Editor, Inspection, Kotlin, Accessor call that can...
并取消选中。 (或在搜索过滤器中输入property syntax
。)
这将在整个项目中禁用此警告。您也可以将严重性更改为适合您需要的其他内容。
编辑:您可以使用@Suppress
注释。
假设您有一个名为A
的Java类公开方法:
getA()
这是一个常规的Java bean访问,getB()
这个是网络电话,例如。你可以写:
fun main(args: Array<String>) {
val a = A()
println(a.a)
@Suppress("UsePropertyAccessSyntax")
print(a.getB())
}
@Suppress
可以在多个级别使用。见Documentation。
<强> EDIT2 强>:
免责声明:还有另一种方法可以做到这一点,但我不会自己使用它,因为它很难看,我更喜欢发出警告而不是使用它。
您可以使用Kotlin扩展程序并重命名您的网络getter。
Java类:
public class A {
private int a;
int getA() {
return a;
}
A _getB() { // Was getB()
return this;
}
}
Kotlin文件:
fun A.getB() : A { // Kotlin extension
return this._getB()
}
fun main(args: Array<String>) {
val a = A()
println(a.a)
print(a.getB()) // No warning here
}