A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© superob123 中级黑马   /  2014-6-2 01:34  /  3632 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

刚学到注解,注解怎么感觉很鸡肋,有没有都一样的,它到底有什么用

8 个回复

倒序浏览
肯定有用啦,不然也不会出现啊!
回复 使用道具 举报
java 注解,从名字上看是注释,解释。但功能却不仅仅是注释那么简单。注解(Annotation) 为我们在代码中添加信息提供了一种形式化的方法,常见的作用有以下几种:
1.生成文档。这是最常见的,也是java 最早提供的注解。常用的有@see @param @return 等;
2.跟踪代码依赖性,实现替代配置文件功能。比较常见的是spring 2.5 开始的基于注解配置。作用就是减少配置。现在的框架基本都使用了这种配置来减少配置文件的数量;
3.在编译时进行格式检查。如@Override放在方法前,如果你这个方法并不是覆盖了超类方法,则编译时就能检查出;

注释有 3 中基本类型
a. 标记注释 -- 没有变量,只有名称标识。例如 @annotation
b. 单一值注释 -- 在标记注释的基础上提供一段数据。如 @annotation(“data”)
c. 完整注释 -- 可以包括多个数据成员,每个数据成员由名称和值构成。
@annotation(val1="data1",val2="data2")
Java 中提供 3 个内置注释类型
a. Override ,只能用于方法 ( 不能用于类,包声明或者其他构造 )
作用:可以保证编译时候 Override 函数的声明正确性
用法: @Override
public void fun(){..}
b.Deprecated 同样只能作用与方法
作用:对不应再使用的方法进行注解
用法: @Deprecated public void fun{...} // 它们说这个注释跟函数要同一行
c.SupressWarnings 可以注释一段代码
作用:关闭特定的警告信息,例如你在使用泛型的时候未指定类型
用法: @SupressWarnings(value={"unchecked"})

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
注解有四种基本类型,每种类型都有自己的作用,他们分别是
@Override:限定重写父类方法
@Override就是用来指定方法覆盖的,他可以强制一个子类必须覆盖父类的方法。

注意:@Override只能作用于方法,不能作用于其他程序元素

@Deprecated:标示已过时
@Deprecated用于标示某个程序元素(类、方法等)已过时,当其他程序使用已过时的类、方法时,编译器将会给出警告。

@SuppressWarnings:抑制编译器警告
@SuppressWarnings指示被该Annotation修饰的程序元素(以及该程序元素中的所有子元素)取消显示指定的编译器警告。
@Safe Varargs(JAVA7新增的,不做解释)

还有后期注解中的属性赋值,这个要和反射结合起来使用。
可能是因为接触应用比较少,才觉得注解的作用不是很大,我也是有此感觉。但是肯定有其出现的原因,这个要花时间研究了:)

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
felixzr 来自手机 高级黑马 2014-6-2 09:03:12
报纸
简单的说,如果你开发一个项目写的代码全是代码没有注解,那么后期即使你自己维护也看的不是很明白,而且其他人也看不明白,会说的,等你到后面就知道注解的作用了
回复 使用道具 举报
注解很重要
回复 使用道具 举报
1.解释代码
2.排错
回复 使用道具 举报
最主要的功用就是你或者别人以后要是维护代码的时候比较容易阅读,如果不注释,以后要是维护阅读代码的时候那感觉相当坑爹。。。。。。
回复 使用道具 举报
楼主看到大家的回复可要注意了,有可能会误导你的.
对于楼上有人回复说,注解的作用是便于阅读,这位同学混淆了注解和注释的作用,注释是类,方法,属性的说明,在生成文档时,也会随之生成,注解的作用可不是这样的.
你还是看看Java核心技术的高级卷吧,里面有介绍这方面的内容,我先给你截个图看看吧

,这本书中介绍到,注解本身是没有任何含义的,在于对于注解的解析器,就是分析处理我们写的注解的东东,还是举例子说明吧,
例子1,不知道你使用过Java中单元测试的工具,junit,这个其实就是在我们写的普通方法前面加了一个@test,这个就是一个注解,本身没有什么作用,但是junit的jar包中能够解析这个内容,因而才实现的单元测试,我们想测试那个代码,或者模拟哪个过程的执行.例子2,你可以使用一下Date类进行创建对象,调用这个类的方法,在编译的时候或者使用开发工具的时候,直接就会提示你,已经过期了,建议使用Calender的对应方法来操作,这个是jvm或者说是开发工具,直接把这个方面的内容就给封装操作了
例子3,楼上有人说,能够给与客户提示,确实有这方面的功能,最常见的就是@deprecated的注解,直接提示用户使用的是不建议的方式,但是这个只是提示,不属于注释有天壤之别.
建议楼主在学习视频的时候,如果有不理解的,参考参考书籍,博采众长,个人在学习中用到的书籍有Java核心技术,Java编程思想,Effective Java ,只是作为参考书籍,因为每个人的理解方式不同,参考不同的书籍的同一个知识点和再看看视频,消化的会好很多.

注解.jpg (134.3 KB, 下载次数: 35)

Java核心技术-高级卷

Java核心技术-高级卷
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马