`
a347347347
  • 浏览: 4169 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

黑马程序员——了解和入门注解的应用

阅读更多
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

1、了解注解及java提供的几个基本注解
 先通过@SuppressWarnings的应用让大家认识和了解一下注解:
 通过System.runFinalizersOnExit(true);的编译警告引出@SuppressWarnings("deprecation")
 @Deprecated
 直接在刚才的类中增加一个方法,并加上@Deprecated标注,在另外一个类中调用这个方法。
 @Override
 public boolean equals(Reflect other)方法与HashSet结合讲解
 总结:
 注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,没加,则等于没有某种标记,以后,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就去干相应的事。标记可以加在包,类,字段,方法,方法的参数以及局部变量上。
 看java.lang包,可看到JDK中提供的最基本的annotation。
2、注解的应用结构图


3、自定义注解及其应用
 定义一个最简单的注解:public @interface MyAnnotation {}
 把它加在某个类上:@MyAnnotation public class AnnotationTest{}
 用反射进行测试AnnotationTest的定义上是否有@MyAnnotation
 根据发射测试的问题,引出@Retention元注解的讲解,其三种取值:RetetionPolicy.SOURCE、RetetionPolicy.CLASS、RetetionPolicy.RUNTIME;分别对应:java源文件-->class文件-->内存中的字节码。
 思考:@Override、@SuppressWarnings和@Deprecated这三个注解的属性值分别是什么?
 演示和讲解@Target元注解
 Target的默认值为任何元素,设置Target等于ElementType.METHOD,原来加在类上的注解就报错了,改为用数组方式设置{ElementType.METHOD,ElementType.TYPE}就可以了。
 元注解以及其枚举属性值不用记,只要会看jdk提供那几个基本注解的API帮助文档的定义或其源代码,按图索骥即可查到,或者直接看java.lang.annotation包下面的类。
4、为注解增加基本属性
 什么是注解的属性
 一个注解相当于一个胸牌,如果你胸前贴了胸牌,就是传智播客的学生,否则,就不是。如果还想区分出是传智播客哪个班的学生,这时候可以为胸牌在增加一个属性来进行区分。加了属性的标记效果为:@MyAnnotation(color="red")
 定义基本类型的属性和应用属性:
 在注解类中增加String color();
 @MyAnnotation(color="red")
 用反射方式获得注解对应的实例对象后,再通过该对象调用属性对应的方法
 MyAnnotation a = (MyAnnotation)AnnotationTest.class.getAnnotation(MyAnnotation.class);
 System.out.println(a.color());
 可以认为上面这个@MyAnnotation是MyAnnotaion类的一个实例对象
 为属性指定缺省值:
 String color() default "yellow";
 value属性:
 String value() default "zxx";
 如果注解中有一个名称为value的属性,且你只想设置value属性(即其他属性都采用默认值或者你只有一个value属性),那么可以省略value=部分,例如:@MyAnnotation("lhm")。
5、为注解增加高级属性
 数组类型的属性
 int [] arrayAttr() default {1,2,3};
 @MyAnnotation(arrayAttr={2,3,4})
 如果数组属性中只有一个元素,这时候属性值部分可以省略大括
 枚举类型的属性
 EnumTest.TrafficLamp lamp() ;
 @MyAnnotation(lamp=EnumTest.TrafficLamp.GREEN)
 注解类型的属性:
 MetaAnnotation annotationAttr() default @MetaAnnotation("xxxx");
 @MyAnnotation(annotationAttr=@MetaAnnotation(“yyy”) )
 可以认为上面这个@MyAnnotation是MyAnnotaion类的一个实例对象,同样的道理,可以认为上面这个@MetaAnnotation是MetaAnnotation类的一个实例对象,调用代码如下:
MetaAnnotation ma =  myAnnotation.annotationAttr();
System.out.println(ma.value());
 注解的详细语法可以通过看java语言规范了解,即看java的language specification。

分享到:
评论

相关推荐

    黑马程序员---注解归纳

    在本篇“黑马程序员---注解归纳”中,我们将深入探讨注解的基本概念、类型以及它们在实际开发中的应用。 首先,注解在Java中是一种特殊的声明,以`@`符号开头,后面跟着注解的名称。它们可以应用于类、接口、方法、...

    Java EE企业级应用开发教程(Spring Spring MVC MyBatis)(黑马程序员编著)

    《Java EE企业级应用开发教程(Spring Spring MVC MyBatis)》是一本专注于Java企业级应用开发的专业教程,由黑马程序员编著。本书的核心在于深入浅出地介绍如何使用Java EE技术栈,特别是Spring、Spring MVC和...

    黑马程序员_hibernate框架开发2016版讲义和笔记资料_day1_day2_day3_day4

    《Hibernate框架深度解析——基于黑马程序员2016版教学资料》 Hibernate,作为一个强大的对象关系映射(ORM)框架,极大地简化了Java开发者在数据库操作中的工作。它通过提供数据持久化的对象模型,使得开发者可以...

    黑马程序员 struts2.1 视频教程

    这个视频教程由黑马程序员提供,由黎活明主讲,旨在帮助开发者深入理解和掌握Struts2.1的核心概念和实际应用。 首先,从标题和描述我们可以了解到,本教程是关于Struts2.1的,它涵盖了从基础到进阶的多个主题。...

    黑马程序员SSM整合学习项目demo

    这个“黑马程序员SSM整合学习项目demo”是一个实践性的学习资源,通过它,你可以深入了解SSM框架的整合过程,提升Java Web开发能力。在实际项目中,SSM框架的整合可以大大提高开发效率,同时提供良好的可维护性和...

    JavaEE企业级应用开发教程(Spring+Spring MVC+MyBatis)配套书籍源码资料 ---黑马程序员 .zip

    通过学习这套教程,开发者不仅可以掌握SSM框架的基本用法,还能了解如何在实际项目中进行集成和优化,提高开发效率和应用性能。此外,对于想要深入Java EE开发的人员,理解和实践这些源码资料将有助于提升自己的专业...

    黑马程序员燕青Mybatis课堂笔记和源码

    在这个"黑马程序员燕青Mybatis课堂笔记和源码"资料中,我们可以深入理解Mybatis的核心概念和实际应用。 1. **Mybatis简介** Mybatis 提供了映射SQL语句的能力,它允许开发者编写动态SQL,避免了传统的JDBC代码繁琐...

    黑马程序员SpringMVC课堂笔记

    总之,《黑马程序员SpringMVC课堂笔记》全面覆盖了SpringMVC的基本概念、配置、开发模式和实践技巧,对于初学者和进阶者都是宝贵的学习资源。通过学习这份笔记,开发者可以掌握构建高效、可维护的Java Web应用所需的...

    了解和入门注解的应用

    了解和掌握注解的应用对于提升代码质量、减少配置文件和增强可维护性具有重要意义。通过合理使用注解,开发者可以更加专注于业务逻辑,而非繁琐的配置和辅助代码。在学习注解时,理解其原理、分类及如何创建自定义...

    黑马程序员servlet笔记代码

    本文将深入探讨这些知识点,帮助开发者更好地理解和应用Servlet技术。 首先,我们要理解HTTP(超文本传输协议)是Web应用程序的基础。HTTP是一种无状态、基于请求与响应模式的应用层协议,用于从Web服务器向客户端...

    黑马程序员Spring框架2016版资料_day2

    通过黑马程序员的Spring框架2016版_day2教程,开发者不仅能够掌握Spring的基础知识,还能了解到如何在实际项目中应用这些知识,从而提升开发效率和代码质量。对于想要深入理解和使用Spring的Java开发者来说,这是一...

    2017黑马程序员第一天Hibernate讲义,笔记,源码

    【描述】同样简洁明了,重申了这是黑马程序员针对Hibernate的培训资料,可能涵盖了第一天课程的主要内容,适合初学者快速入门。 【标签】中的“Hibernate”是Java领域的一个流行持久化框架,它简化了数据库与Java...

    黑马程序员_hibernate框架开发2016版讲义和笔记资料_day02

    《黑马程序员_hibernate框架开发2016版讲义...通过对黑马程序员提供的这门课程的学习,开发者不仅能掌握Hibernate的核心概念和技术,还能提升在实际项目中的数据库操作效率,为构建高效、稳定的Java应用打下坚实基础。

    黑马程序员Android视频教程

    ### 黑马程序员Android视频教程知识点解析 #### 一、Android基础概述 - **定义与特点**:Android是一种基于Linux内核(不包括GNU组件)的开源操作系统,主要用于移动设备。它由Google公司及其领导下的开放手机联盟...

    黑马程序员ssm框架教程p90,创建所需文件

    本教程是黑马程序员提供的关于SSM框架的第90部分,主要讲解如何创建项目中所需的文件,这对于理解和实践SSM整合至关重要。 首先,我们来了解一下Spring框架。Spring是一个全面的后端开发框架,它提供了依赖注入(DI...

    黑马程序员SSM框架jar整合

    在"黑马程序员SSM框架jar整合"这个资源中,很可能包含了已经配置好SSM框架的jar包,方便初学者直接导入项目,快速搭建SSM开发环境。这些预打包的jar包可以帮助开发者省去配置和整合的繁琐步骤,更专注于业务逻辑的...

    黑马程序员 hibernate 2016版讲义和笔记(4天全)

    《Hibernate技术深度剖析——基于黑马程序员2016版讲义与笔记》 Hibernate,作为Java领域中的一个著名持久化框架,为开发者提供了强大的对象关系映射(ORM)功能,极大地简化了数据库操作。本资料集是黑马程序员...

    黑马程序员struts2框架2016版资料

    "黑马程序员"是一家知名的编程教育机构,他们提供的Struts2框架教程资料旨在帮助开发者深入理解和掌握这一技术。 Struts2的核心特性包括: 1. **Action类**:它是业务逻辑处理的主要载体,继承自`ActionSupport`类...

    struts2学习笔记黑马程序员

    **案例——商品信息查询** 1. **前端操作**:利用jQuery发送AJAX请求,获取商品信息并显示。 2. **服务器端处理**:配置Struts2 Action以处理请求,并返回商品数据。 3. **响应JSON处理**: - **属性过滤**:可以...

Global site tag (gtag.js) - Google Analytics