10

有时在调试时,您会遇到无法访问的代码片段。有没有办法抑制警告?

4

4 回答 4

11

Java 对这样的调试具有(原始)支持,因为简单if的布尔常量不会生成此类警告(并且,实际上,当评估为假时,编译器将删除整个条件块)。所以你可以这样做:

if(false) {
    // code you don't want to run
    }

同样,如果您临时插入提前终止以进行调试,您可以这样做:

if(true) { return blah; }

或者

if(true) { throw new RuntimeException("Blow Up!"); }

请注意,Java 规范明确声明在编译时会删除不断为假的条件块,而 IIRC,不断为真的条件块会删除条件。这包括:

public class Debug
{
static public final boolean ON=false;
}

...

if(Debug.ON) {
    ...
    }
于 2011-05-17T01:42:10.107 回答
6

在任何编译器上执行此操作的唯一方法是@SuppressWarnings("all").

如果您使用的是 Eclipse,请尝试@SuppressWarnings("unused").

于 2011-05-17T01:36:48.807 回答
4

正如克莱图斯告诉我们的,

这取决于您的 IDE 或编译器。

也就是说,至少对于 Eclipse,没有办法做到这一点。在我的 Eclipse 配置中,无法访问的代码会导致编译时错误,而不仅仅是警告。另请注意,这与“死代码”不同,例如

if (false)
{
    // dead code here
}

Eclipse(默认情况下)会发出警告,而不是错误。

于 2011-05-17T01:37:26.307 回答
4

根据Java 语言规范

如果由于无法访问而无法执行语句,则这是编译时错误。

您有时可以将无法访问的代码变成死代码(例如,的主体if (false) {...})。但它是一个错误是语言定义的一部分。

于 2011-05-17T01:53:38.257 回答