【问题标题】:Weird result from "@SuppressWarnings"“@SuppressWarnings”的奇怪结果
【发布时间】:2016-11-28 01:13:21
【问题描述】:

Eclipse 警告我局部变量 randInt 可能未初始化(确实如此)。所以我添加了第一行:

@SuppressWarnings("all")
return randInt;

警告消失了,但第一行出现了两个新错误: 语法错误:插入“枚举标识符”以完成 EnumHeaderName,并且 语法错误:插入“EnumBody”以完成 BlockStatement

到底是什么?很难找到有关@SuppressWarnings 的信息。有没有比使用“全部”更精确的方法来消除这个特定的警告?

最小的、完整的、可验证的例子:

public class SuppressTest {
    public int cut() { 
        int randInt = 0; 
        @SuppressWarnings("all") 
        return randInt;
    }
}

【问题讨论】:

  • 你能发一个minimal reproducible example吗?
  • 等等,我看到这个方法与布尔实例变量“cut”同名(在@SuppressWarnings 之前立即设置为true)。这在 Java 中合法吗?这可能是问题吗?代码运行正常。

标签: java annotations suppress-warnings


【解决方案1】:

您不能在 return 语句中插入 @SuppresWarnings。在 java 8 中,您只能注释类、方法/构造函数、字段、参数和(java 8 中的新功能)局部变量。

所以在您的情况下,java 无法解析您所写的内容。在方法级别移动@SuppressWarnings

【讨论】:

  • 谢谢。我的问题的第 2 部分:是否有针对“变量可能尚未初始化”消息的特定类型的警告?
猜你喜欢
  • 1970-01-01
  • 2012-12-16
  • 2012-12-06
  • 2016-08-24
  • 2018-01-24
  • 2021-03-01
  • 2014-08-17
  • 1970-01-01
  • 2023-03-18
相关资源
最近更新 更多