深入理解Java注解及实例
- 更新时间:2022-06-14 14:43:42
- 编辑:瞿代荷
-
Java实战(第2版)
- 大小:13.1 MB
- 发布人:终音仪
- 下载:Java编程
Java注解
什么是注解?
Java中的注解就是Java源代码的元数据,也就是说注解是用来描述Java源代码的。 基本语法就是:@后面跟注解的名称。
①Override:标识某一个方法是否正确覆盖了它的父类的方法。
②Deprecated:表示已经不建议使用这个类成员了。 它是一个标记注解。
③SuppressWarnings:用来抑制警告信息 等等。
要更好的理解注解,我们可以自己写一个注解
@Target : 用来限制注解可以用到那几个地方。比方可以用到类上,可以用到方法胜都可以用@Target来限制
@Retention:这个是用来控制注解编译在Class中的状态的,默认是编译到Class里去,但是不读出来,还有两种状态是 不编译到Class里面去, 最后一种是编译过于,并且可以通过类反射读出来的
@Documented : 可以利用网络来生成注解的
@Inherited : 子类是否能继承注解
那么下面是我们自己写的注解类
package cn.hncu.annotation; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Inherited @Documented @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE,ElementType.METHOD}) //目标: 限制该注解能够用在哪些地方,如果没定义@Target则不限制即无论哪里都可以用 public @interface MyAnno { public String schoolName() default "hncu"; //注解中的成员变量要这么定义 }
测试,学习使用
package cn.hncu.annotation; import java.util.ArrayList; import java.util.Collection; @MyAnno public class AnnotationHello { private String name="hncu"; public static void main(String[] args) { System.out.println("hello"); } @Override public String toString() { return super.toString(); } @MyAnno(schoolName="大城院") @Deprecated public void abc(){ System.out.println("abc..."); } @SuppressWarnings({ "rawtypes", "unchecked" }) public void colDemo(){ Collection col = new ArrayList(); col.add("aa"); } //注解,只是给其它程序或代码读取信息的 @MyAnno(schoolName="湖南城市学院") public void demo(){ System.out.println("1111111"); } @MyAnno //因为该注解中的成员变量schoolName设置了默认值,因此这里可以不赋值。若没设置默认值,则必须要在这里赋值 public void demo2(){ System.out.println("1111111"); } //@MyAnno("abc") //如果注解中的变量名是value,则这里可以不给出变量名 public void demo3(){ System.out.println("33333333333"); } }
通过类反射读出来
package cn.hncu.annotation; import java.lang.reflect.Method; public class UseMyAnno { public static void main(String[] args) { try { Class c = Class.forName("cn.hncu.annotation.AnnotationHello"); //判断类上面是否有该注解(@MyAnno) boolean boo = c.isAnnotationPresent(MyAnno.class); System.out.println("类上是否有该注解:"+boo); Method ms[] = c.getDeclaredMethods(); for(Method m: ms){ //判断方法上面是否有该注解(@MyAnno) if(m.isAnnotationPresent(MyAnno.class)){ System.out.println("有注解的方法:"+m.getName()); //演示读取注解中成员变量的值----从m对象中获取该注解,进而读取它的成员变量的值 MyAnno ma = (MyAnno)m.getAnnotation(MyAnno.class); System.out.println("学校名称:=="+ma.schoolName()); //获取到了这些数据过后,下面就可以开始你的处理了 } } } catch (ClassNotFoundException e) { e.printStackTrace(); } } }
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
相关下载
-
Java程序员修炼之道
大小:8.7 MB -
Java多线程编程实战指南:核心篇
大小:172.6 MB -
《Java架构师指南》源代码
大小:175.6 MB -
阿里巴巴泰山版java开发手册
大小:1.5 MB
相关教程
-
浅谈Java内存模型之happens-before
给大家整理了关于Java的教程,于存在线程本地内存和主内存的原因,再加上重排序,会导致多线程环境下存在可见性的问题。那么我们正确使用同步、锁的情况下,线程A修改了变量a何时对线程B可见?下面小编来简单介绍下
发布时间:2022-06-12主题:
查看详情 -
java商城项目实战之购物车功能实现
给网友们整理关于java的教程,这篇文章主要为大家详细介绍了java商城项目实战之购物车功能实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
发布时间:2022-06-13主题:
查看详情 -
java获取文件大小的几种方法
给网友朋友们带来一篇关于java的教程,这篇文章主要介绍了java获取文件大小的几种方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
发布时间:2022-06-12主题:
查看详情 -
JavaMail发送(带图片和附件)和接收邮件实现详解(四)
给大家整理一篇关于Java的教程,这篇文章主要为大家详细介绍了JavaMail带图片和附件的发送和接收邮件实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
发布时间:2022-06-12主题:
查看详情 -
Java Exception异常全方面分析
给网友们整理关于java的教程,异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等
发布时间:2022-06-11主题:Java 异常
查看详情 -
Java在利用反射条件下替换英文字母中的值
给网友朋友们带来一篇关于java的教程,今天小编就为大家分享一篇关于Java在利用反射条件下替换英文字母中的值,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
发布时间:2022-06-11主题:
查看详情 -
Java后台实现浏览器一键导出下载zip压缩包
给网友们整理关于Java的教程,这篇文章主要为大家详细介绍了Java后台实现浏览器一键导出下载zip压缩包,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
发布时间:2022-06-12主题:
查看详情 -
Java编程实现邻接矩阵表示稠密图代码示例
给大家整理了关于Java的教程,这篇文章主要介绍了Java编程实现邻接矩阵表示稠密图代码示例,具有一定参考价值,需要的朋友可以了解下。
发布时间:2022-06-12主题:
查看详情 -
Java并发编程学习之Unsafe类与LockSupport类源码详析
这篇文章主要给大家介绍了关于Java并发编程学习之Unsafe类与LockSupport类源码的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面
发布时间:2022-06-11主题:
查看详情 -
简单谈一谈Java中的Unsafe类
给大家整理了关于Java的教程,其实Java官方不推荐使用Unsafe类,因为官方认为,这个类别人很难正确使用,非正确使用会给JVM带来致命错误。但还是要会使用,下面这篇文章就来给大家简单的谈一谈关于Java中Unsafe类的相关资
发布时间:2022-06-12主题:
查看详情