我最近一直在阅读关于注释的内容,我有点困惑.我已经使用了注释@NotNull,但我真的不知道它是如何检查变量是否为空.没有在代码中的任何位置,我看到任何检查null的值.这是有道理的,因为它是一个接口,所以实际处理在哪里发生,为什么不在代码中指定这个位置?我见过的例子通常只是制作一个带有值的注释,但是没有做任何事情,所以我对实现的位置感到困惑.
解决方法:
注释只是一个元数据,不多也不少.
如果要指定有关该类的一些详细信息,请在其上添加注释.
将它们(在某种程度上)视为旧的众所周知的XML方法来定义元数据的替代方案.
现在,很明显有人会读取您的XML并运行使用元数据制作内容的代码.注释也是如此:注释所属的框架负责读取注释并使用此信息创建内容.在@NotNull的情况下,它的hibernate-validator项目. java公开的API允许通过反射访问注释中的信息(类如java.lang.Class,Method,Field等).所以在hibernate验证器中的某个地方有一个代码可以进入你的类,通过反射读取注释并检查类是否遵循这些注释.
这些注释通常具有保留策略“运行时”,这意味着它们保留在字节码中并与带有这些注释的类一起加载.
还有一些应该由Java编译器处理的注释.喜欢@Deprecated,@ SuppressWarnings等.拥有此类注释的好处是您可以在编译阶段找到一些代码问题.
您还可以在编译阶段放置注释处理器并“插入”它们,但这是完全不同的故事.
希望这能澄清一点注释的用法