繁体   English   中英

为方法或类抑制“使用属性访问语法”

[英]Suppress “Use property access syntax” for method or class

在我的项目中,我有一个委托(用Java编写)用于通过RPC获取数据,大多数方法以'get'开头,有些不需要参数,因此Kotlin建议用属性访问语法替换对它们的调用,而不是实现属性语义(好吧,因为它们执行网络请求),所以我想默认禁止所有这些方法使用所有这些检查,而不是代替每个调用(是的,我知道块的@Suppress注释) ,它与我需要的完全相反)。

有没有任何解决方案除了重命名,所以他们不会以'get'开头?

我想你使用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可用于多个级别。 文档

IntelliJ IDEA有很好的帮助来抑制这些警告。 想法屏幕截图

编辑2
免责声明:有另一种方法可以做到这一点,但我不会自己使用它,因为它很难看,我更喜欢发出警告而不是使用它。

您可以使用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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM