Leh*_*ane 111 java glossary annotations
Java中注释的目的是什么?我把这些模糊的想法放在评论和实际代码之间.它们是否在运行时影响程序?
它们的典型用法是什么?
它们是Java独有的吗?是否有C++等价物?
And*_*vig 79
注释主要由检查其他代码的代码使用.它们通常用于在运行时修改(即装饰或包装)现有类以改变其行为.诸如JUnit和Hibernate之类的框架使用注释来最小化您自己编写以使用框架所需的代码量.
Oracle 在其网站上对Java的概念及其含义进行了很好的解释.
Kon*_*lph 16
此外,它们是Java独有的,是否有C++等价物?
不,但VB和C#具有相同的属性.
它们的用途非常多样化.一个典型的Java示例@Override对代码没有影响,但如果修饰方法实际上没有覆盖另一个方法,编译器可以使用它来生成警告(或错误).同样,方法可以标记为过时.
然后有反思.当您在代码中反映类的类型时,您可以访问属性并根据其中的信息执行操作.我不知道Java中的任何示例,但在.NET中,编译器使用它来生成(de)类的序列化信息,确定结构的内存布局并声明从遗留库(以及其他)中导入函数.它们还控制IDE表单设计器的工作方式.
/ EDIT:类的属性与标记接口(如Java中的Serializable)相当.但是,.NET编码指南说不使用标记接口.此外,它们仅适用于类级别,而不适用于方法级别.
Eli*_*ght 13
Anders给出了一个很好的总结,这是一个JUnit注释的例子
@Test(expected=IOException.class)
public void flatfileMissing() throws IOException {
readFlatFile("testfiles"+separator+"flatfile_doesnotexist.dat");
}
Run Code Online (Sandbox Code Playgroud)
这里的@Test注释告诉JUnit该flatfileMissing方法是一个应该执行的测试,并且预期的结果是抛出的IOException.因此,当您运行测试时,将调用此方法,并且测试将根据是否IOException抛出而通过或失败.
要了解可以使用注释做的一些很酷的事情,请查看我的 JavaBean 注释和注释处理器。
它们非常适合生成代码,在构建过程中添加额外的验证,而且我也一直将它们用于错误消息框架(尚未发布 - 需要与老板澄清......)。
| 归档时间: |
|
| 查看次数: |
32308 次 |
| 最近记录: |