在java中强制警告

问题描述 投票:0回答:7

我想要一种手动抛出编译时警告的机制。我用它来标记未完成的代码,这样我以后就不可能忘记它。 @Deprecated 关闭,但在调用方站点发出警告,而不是在创建站点发出警告。我正在使用日食。类似于 C# 中的#Warning。

java compiler-warnings
7个回答
7
投票

为什么不在源代码中添加一个标志,例如

//TODO:
之类的?然后搜索文件中所有出现的
TODO
?你甚至可以有一些特殊的标志,比如
FINISHME
之类的。

如果您的项目中有数百个来自团队的 TODO,您可以按字符串进行过滤,例如在任务窗格的右上角菜单中显示您姓名的首字母缩写。


2
投票

以我的拙见,比使用已弃用的注释抑制警告注释要好得多。

@SuppressWarnings("XXX")

几乎可以在任何地方进行注释,只要 XXX 不是有效的警告,您就会收到 Eclipse 的警告。


1
投票

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


1
投票

如果调用未完成的方法(例如),您可以尝试抛出异常

throw new UnsupportedOperationException()

(或者您可以创建自己的异常)。显然,这只会在运行时有所帮助(除非您在代码中进行搜索或执行某些操作 - 但 Todo 将是一个更好的解决方案)

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


1
投票

我总是通过输入“*** LEFT OFF HERE ***”或类似的内容来做到这一点。由于这不是有效的 Java 或 C++ 或几乎任何其他语言语法,因此编译器会给出错误消息。

当然,这会给出错误而不是警告。如果您想以其他方式成功编译,我想一个简单的做法是放置一条您知道会生成编译器警告的语句,并带有注释“完成此”或其他内容。


1
投票

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

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

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");
    }   
}
© www.soinside.com 2019 - 2024. All rights reserved.