我想要一种手动抛出编译时警告的机制。我用它来标记未完成的代码,这样我以后就不可能忘记它。 @Deprecated 关闭,但在调用方站点发出警告,而不是在创建站点发出警告。我正在使用日食。类似于 C# 中的#Warning。
为什么不在源代码中添加一个标志,例如
//TODO:
之类的?然后搜索文件中所有出现的 TODO
?你甚至可以有一些特殊的标志,比如 FINISHME
之类的。
如果您的项目中有数百个来自团队的 TODO,您可以按字符串进行过滤,例如在任务窗格的右上角菜单中显示您姓名的首字母缩写。
以我的拙见,比使用已弃用的注释抑制警告注释要好得多。
@SuppressWarnings("XXX")
几乎可以在任何地方进行注释,只要 XXX 不是有效的警告,您就会收到 Eclipse 的警告。
创建一个打印警告的注释。
如果调用未完成的方法(例如),您可以尝试抛出异常
throw new UnsupportedOperationException()
(或者您可以创建自己的异常)。显然,这只会在运行时有所帮助(除非您在代码中进行搜索或执行某些操作 - 但 Todo 将是一个更好的解决方案)
如果您使用 Eclipse,您可以使用 // TODO 标记未完成的代码,它将显示在您的任务列表中(如果您配置了它,则显示在右侧的装订线中)。显然,如果您有很多 Todo 标签,事情会变得非常嘈杂。
我总是通过输入“*** LEFT OFF HERE ***”或类似的内容来做到这一点。由于这不是有效的 Java 或 C++ 或几乎任何其他语言语法,因此编译器会给出错误消息。
当然,这会给出错误而不是警告。如果您想以其他方式成功编译,我想一个简单的做法是放置一条您知道会生成编译器警告的语句,并带有注释“完成此”或其他内容。
当我想警告用户调用方法时,我(错误)使用了内置的 @Deprecated 注释,它会在调用方生成警告。实际上它的含义略有不同,但我不在乎。
/** [Additional information...]
* It is marked as deprecated to warn callers. */
@Deprecated public void methodForWhichIWantToCreateAWarning();
我不确定java中是否有类似的东西
但这里有一些可能对您有帮助:
像这样编译下面的代码:
javac -Xprint verbose.java
public class verbose{
public @interface SomeMessage {
String somevalue();
}
@SomeMessage(
somevalue = "WHOOOOHOOOO000000000000000"
)
public static void main(){
System.out.println("Hello");
}
}