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