在java中强制警告

时间:2010-05-19 18:45:54

标签: java compiler-construction warnings

我想要一种手动抛出编译时警告的机制。我用它来标记未完成的代码,所以我以后不可能忘记它。 @Deprecated已关闭但在来电网站发出警告,而不是在创建网站上发出警告。我正在使用eclipse。像C#中的#Warning一样。

7 个答案:

答案 0 :(得分:6)

为什么不在源代码中添加标记,如//TODO:或其他什么?然后只搜索文件中TODO的所有出现?你甚至可以拥有一些特殊的旗帜,如FINISHME或其他东西。

如果团队中的项目中有数百个TODO,您可以按字符串过滤,例如您在“任务”窗格的右上角菜单中的缩写。

答案 1 :(得分:2)

创建一个打印出警告的注释。

答案 2 :(得分:2)

比我谦卑地使用弃用的注释更好的抑制警告注释。

@SuppressWarnings("XXX")

几乎可以在任何地方注释,只要XXX不是一个有效的警告,你就会收到日食的警告。

答案 3 :(得分:1)

如果调用未完成的方法(例如)

,您可以尝试抛出异常
throw new UnsupportedOperationException()

(或者您可以创建自己的例外)。显然这只会在运行时有所帮助(除非你在代码中进行搜索或其他东西 - 但Todo将是一个更好的解决方案)

如果您正在使用eclipse,您可以使用// TODO标记未完成的代码,它将显示在您的任务列表中(如果您已配置它,则会显示正确的装订线)。如果你有很多Todo标签,显然事情会变得非常嘈杂。

答案 4 :(得分:1)

我一直这样做只是把“*** LEFT OFF HERE ***”或其他一些。由于这不是有效的Java或C ++或几乎任何其他语言语法,编译器会为其提供错误消息。

当然,这会给出错误而不是警告。如果你想以其他方式成功编译,我想一个简单的事情就是把你知道的语句生成一个编译器警告,注释说“完成这个”或其他什么。

答案 5 :(得分:1)

当我想警告用户调用方法时,我(错误)使用内置的@Deprecated注释,它会在调用方生成警告。实际上它的含义略有不同,但我不在乎。

/** [Additional information...]
 * It is marked as deprecated to warn callers. */
@Deprecated public void methodForWhichIWantToCreateAWarning();

答案 6 :(得分:0)

我不确定java中是否有类似的内容

但是这里可以帮到你:

编译下面的代码:

javac -Xprint verbose.java

public class verbose{

    public @interface SomeMessage {
        String somevalue();
    }


    @SomeMessage(
        somevalue = "WHOOOOHOOOO000000000000000"
    )

    public static void main(){
        System.out.println("Hello");
    }   
}