在Groovy中禁止显示警告“对字段的访问权限超出其访问权限”

xmd2e60i  于 2023-02-11  发布在  其他
关注(0)|答案(2)|浏览(232)

我编写了一个Groovy脚本,需要访问一个带有private访问修饰符的字段,这可以正常工作,但会生成一个警告:
Access to <field_name> exceeds its access rights
我想取消这个警告。我必须使用@SuppressWarnings注解的什么值来实现它?
我试过@SuppressWarnings("all"),效果很好,但是我想对抑制进行更细粒度的控制。我也试过@SuppressWarnings("AccessingNonPublicFieldOfAnotherObject"),但是没有效果。
以下是此警告在IntelliJ中的显示方式:

不幸的是,自动提示并不建议任何明智的解决方案:

mjqavswn

mjqavswn1#

如果您正在谈论IntelliJ警告:

然后,您可以在违规者上按Alt+Enter,并选择“禁止使用方法”,如下所示:

之后,您将在测试方法上看到@SuppressWarnings("GroovyAccessibility")

pjngdqdw

pjngdqdw2#

当我在Gradle项目中使用buildSrc文件夹时,我遇到了这个“问题”,该文件夹包含Gradle构建脚本的Kotlin代码,并在Groovy代码中使用。
看起来是因为我访问的是私有变量字段而不是getter。Kotlin默认将字段设置为私有。我通过在Kotlin代码中使用@JvmField解决了这个问题,它将变量字段设置为公共,并且不为该字段生成getter。

// groovy in gradle build script
compileOptions {
    sourceCompatibility(CompileOptions.javaVersion)
}

// kotlin in buildSrc (this gives the warning)
object CompileOptions {
    val javaVersion = JavaVersion.VERSION_11
}
// kotlin in buildSrc (this does not give the warning as field is now public)
object CompileOptions {
    @JvmField val javaVersion = JavaVersion.VERSION_11
}

相关问题