在我的项目中,我有一个委托(用Java编写),用于通过RPC获取数据,其中大多数方法以'get‘开头,有些方法不需要参数,因此Kotlin建议用属性访问语法替换对它们的调用,而它们不满足属性语义(因为它们执行网络请求),所以我想禁止对所有这些方法默认使用的方法进行检查,而不是代替每个调用(是的,我知道块的@Suppress注释,它的工作原理与我所需要的完全相反)。
除了重命名它们,这样它们就不会以'get‘开头了,还有其他解决方案吗?
发布于 2017-07-26 16:11:54
我想您使用了IntelliJ的想法。
您可以去Preferences, Editor, Inspection, Kotlin, Accessor call that can...并取消它。(或在搜索筛选器中键入property syntax )。
这将在整个项目中禁用此警告。您还可以将严重性更改为其他适合您需要的东西。
编辑:您可以使用@Suppress注释。
假设您有一个名为A的Java类,公开方法:
getA()这是一个常规的Java访问,getB()这个是一个网络调用。你可以写:
fun main(args: Array<String>) {
val a = A()
println(a.a)
@Suppress("UsePropertyAccessSyntax")
print(a.getB())
}@Suppress可以在几个级别上使用。见文档。
IntelliJ IDEA对抑制这些警告有很好的帮助。

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
}发布于 2022-11-11 13:55:06
只需在方法或类声明上面使用@Suppress("UsePropertyAccessSyntax")即可。
https://stackoverflow.com/questions/45326364
复制相似问题