最近我一直在阅读有关注释,我有点困惑。我已经使用了注释@NotNull,但我真的不知道它是如何检查变量是否为空。没有在代码中的任何地方看到任何检查null的值。这是有道理的,因为它是一个接口,所以实际的处理发生在哪里,为什么不在代码中指定这个位置?我所见过的例子通常只是创建一个需要值的注释,但是没有做任何其他的事情,所以我对实现的发生地点感到困惑。注释处理在哪里发生?
4
A
回答
5
注释只是一个元数据,不多不少。 如果您想指定关于您在其上放置注释的类的一些细节。 认为它们(在某种程度上)是替代以前熟知的定义元数据的XML方法。
现在,很明显,有人读你的XML并运行代码,使元数据产生一些东西。注释也会发生同样的情况:注释所属的框架负责读取注释并对此信息进行处理。在@NotNull
的情况下,它的hibernate-validator项目。 Java公开的API允许通过反射访问注释中的信息(类如java.lang.Class
,Method
,Field
等)。因此,在Hibernate验证器内部的某个代码会传递给您的类,通过反射读取注释并检查该类是否遵守这些注释。 这些注释通常具有保留策略'运行时',这意味着它们被保存在字节码中并与携带这些注释的类一起加载。
还有一些应该由Java编译器处理的注释。像@Deprecated
,@SuppressWarnings
等等。拥有这种注释的好处是,您可以在编译阶段找到一些代码问题。
你也可以把注释处理器和'插件'在编译阶段,但它的完全不同的故事。
希望这个稍微澄清一下注释的用法
相关问题
- 1. SSAS处理发生在哪里
- 2. 注释处理的正确位置在哪里?
- 3. eclipse注释处理器不工作。在哪里显示错误?
- 4. 我的注释在哪里?
- 5. @Async注释去哪里?
- 6. 如何知道未处理的异常发生在哪里?
- 7. Eclipse在哪里打印它在注释处理器中输出的消息?
- 8. “官方”注释api在哪里?
- 9. EF6的数据注释在哪里
- 10. Oracle在哪里存储表注释?
- 11. 在哪里处理StaleObjectStateException
- 12. 在哪里处理猫鼬
- 13. 处理分配在哪里?
- 14. HTMLImageElemen处理HTMLImageElemen.src在哪里?
- 15. 在哪里处理例外
- 16. 具有元注释的触发器注释处理器
- 17. xmlHttprequest在哪里发生?
- 18. pthread segfault在哪里发生?
- 19. Java注释处理器,带注释的注释类型
- 20. GUI处理在哪里管理?
- 21. 自定义注释处理
- 22. 注释处理器例外
- 23. 如何处理注释?
- 24. 使用注释处理器
- 25. 注释处理器@autoservice
- 26. 何时处理Java注释?
- 27. 注释处理 - 创建ExecutableElement
- 28. eclipse java注释处理
- 29. Java注释处理基础
- 30. 未处理HK2注释