Java注释:在属性上还是在方法上?有什么区别

时间:2011-01-25 21:28:47

标签: java annotations

Hibernate Search,Hibernate,Struts2 ......我看到更多的例子......在相同的例子中我看到了字段上的注释..其他关于get / set方法..有区别吗?或者是休闲..

我希望这不是一个愚蠢的问题!

Saluti!

路易

2 个答案:

答案 0 :(得分:3)

差异取决于注释及其使用方式。例如,在Spring中,您只能在类上使用@Controller注释。这告诉Spring该类是一个控制器。

就方法而言,@RequestMapping是一个方法上的注释。对于属性,您可以使用@NotNull等验证注释(在Hibernate验证器中)。

注释绝对不是随意的;它们具有意义,可能会影响代码的行为方式。

关于注释的Java documentation

  

注释提供有关a的数据   程序不属于   程序本身。他们没有直接的   对代码操作的影响   他们注释。

     

注释有很多用途,   其中:

     
      
  • 编译器的信息 - 可以使用注释   编译器检测错误或抑制   警告。

  •   
  • 编译时和部署时处理 - 软件工具可以   处理注释信息   生成代码,XML文件等   类推。

  •   
  • 运行时处理 - 可以使用一些注释   在运行时检查。

  •   
     

注释可以应用于a   程序的类声明,   字段,方法和其他程序   元件。

您可以在定义自己的注释时通过指定元素(使用@Target注释)来指定注释可以注释的内容。

答案 1 :(得分:0)

这实际上取决于解释注释的代码。它当然可以有所不同,但是你所谈论的注释可能意味着注释一个“属性”,这在Java中技术上不存在

Java有字段和方法,但这些字段和方法用于模拟“Java Bean”约定下的属性,即您有一个公共setX()getX()方法,通常(但不总是)写并阅读私人字段x。它们通过命名条件而不是语言机制联系在一起。

因此,大多数对这些属性使用注释的框架(例如,用于持久性映射或依赖注入)都是灵活的,允许您注释字段或get或set方法。