2 it newbies IT_newbies 于 2016.01.27 18:54 提问

java里的Annotation注解的作用 作为Java初学者实在是费解

注解与注释有什么区别吗 而且注解一般用在什么地方 还有人说注释是给人看的 注解是给机器看的 可是机器还要看注解吗

5个回答

caozhy
caozhy   Ds   Rxr 2016.01.27 18:58
已采纳

注释是给人看的 注解是给机器看的
这说的是对的,但是比较通俗。

机器看注解,说的是程序在运行的时候,检索一个类型(通常这个类型并不是这个程序的作者开发的)的字段、成员、方法等信息。这个在java中叫做反射。

比如说,你定义了一个类,这个类有很多成员变量,你希望hibernate能够将它映射到数据库的表和字段上,那么你可以加上注解。
那么hibernate(hibernate的开发者在开发这个框架的时候显然不知道你的类怎么定义的,有什么成员,每个成员映射到数据库的什么字段上),但是你可以通过注解定义。
这样hibernate就可以读取到这些信息,并且做出对应的处理。

caozhy
caozhy   Ds   Rxr 2016.01.27 18:58

注解信息会被编译器编译到类库里面去,所以程序可以解析。而注释,则会被编译器忽略。

caozhy
caozhy   Ds   Rxr 2016.01.27 19:00

从编程思想的角度来说,这个叫做元编程(meta programming)。
也就是说,你的程序被另一个程序视作“数据”,那个程序对你的程序进行处理,那个程序就是处理程序的程序(一般的程序可以看作是处理数据的程序)。

caozhy
caozhy 回复IT_newbies: 本身这个不难理解。你编写一个小程序,如果希望提供一个插件的功能,也可以用用反射的。元数据一个道理,就是描述数据的数据。元(meta)是一个很常见的单词,在计算机科学中。
接近 2 年之前 回复
IT_newbies
IT_newbies 元编程这个词我都没听说过 还有元数据这个好像是生成文档的 听您用hibernate说明 好像注解反射这些东西在ee上比较有用 在se上没多大作用是吗 我现在还处在se阶段 而且注解反射算是se的范围吗
接近 2 年之前 回复
enpterexpress
enpterexpress   2016.01.27 20:00
cuiwei1026522829
cuiwei1026522829   Ds   Rxr 2016.01.28 15:37
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!