`
想学跑的猪
  • 浏览: 15313 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

黑马程序员_Java高新技术_之篇四_注解

阅读更多

            ------ android培训java培训、java基础学习技术总结、期待与您交流! ----------

   注解

     了解注解及java提供的几个基本注解
     * 先通过@SuppressWarnimgs的应用让大家直观地了解注解:
     * 通过System.runFinalizersOnExit(true);的编译警告引出
     * @SuppressWarnings("depresscation")
     * @deprecated
     * 直接在刚才的类中增加一个方法,并加上@Deprecated标注,在另外
     * 一个类中调用这个方法。
     * @Override
     * public bollean equals(Reflect other)方法与HashSet结合讲解
     * 总结
     * 注解相当于一种标记,在程序加了注解就等于为程序打上了某种标记;没加,则等于
     * 没有某种标记,以后,javac编译器,开发工具和其他程序可以用发射来了解
     * 你的类及各种元素上有无任何标记,看你有什么标记,就去干相应的事。标记可以                   
     * 加在你的包,类,字段,方法,方法的参数以及局部变量上
     * 看java.lang包,可看到jdk中提供的最基本的annotation。
     *
     *
     * 自定义注解及其应用
     * 定义一个简单的注解:public @interface MyAnnotation{}
     * 把它加在某个类上: @MyAnnotation public class AnnotationTest{}
     * 用反射进行测试的问题,引出@Retention元注解的讲解,其三种取值:
     * RetionPolicy.SOURCE、RetentionPolicy.CLASS、
     * RetionPolicy.RUNTIME;分别对应:java源文件-->class文件-->内存中的字节码。
     * 思考:@Override、@SuppressWarning和@Deprecated这三个注解的属性值分别是什么?
     * 演示和讲解@Target元注解
     * Target的默认值为任何元素,设置Target等于ElementType.METHOD,原来加在类上的注解就报错了,改为用数组方式
     * 设置{ElementType.METHOD,ElementType.TYPE}就可以了。
     * 元注解以及其枚举属性值不用记,只要会看jdk提供的那几个基本注解的API帮助文档的定义或其源代码
     * ,按图索骥即可查到,或者直接看java.lang.annotation包下面的类。
     *
     *
     * 注解的应用结构图
     * 注解类   --> 应用了"注解类"的类       -->对
     *
     *
     * 为注解增加基本属性
     * 什么事注解的属性
     * 一个注解相当于一个胸牌,如果你胸前贴了胸牌,就是传智博客的学生,否则,就不是。如果还想区分
     * 是传智博客那个班的学生,这个时候可以为胸牌再增加一个属性来进行区分。
     * 加了属性的标记效果为:@MyAnnotation(color="red")
     * 定义基本类型的属性和应用属性
     * 在注解中增加String color();
     * @MyAnnotation(color="red")
     * 用反射的方式获得注解对应的实例对象后,在通过该对象调用属性对应的方法
     * MyAnnotation a=(MyAnnotation)AnnotationTest.class.getAnnotation(MyAnnotation.class);
     * System.out.println(a.color());
     * 可以认为上面这个@MyAnnotation是MyAnnotation类是一个实例对象
     * 为属性指定缺省值:
     * String color() default "yellow";
     * value属性:
     * String value()default"zxx";
     * 如果注解中有一个名称为value的属性,且你只想设置value属性(即其他属性都采用默认
     * 或者
     * 为注解增加高级属性
     * 数组类型的属性
     * int[] arrayAttr() default{1,2,3};
     * @MyAnnotation(arrayAttr={2,3,4};
     * 如果数组属性中只有一个元素,这时候属性值部分可以省略大括号
     * 枚举类型的属性
     * EnumTest.TrafficLamp();
     * @MyAnnotation(lamp=EnumTest.Traffic.GREEN)
     * 注解类型的属性:
     * MetaAnnotation annotationAttr() default @MetaAnnotation("XXXX");
     * @MyAnnotation(annotationAttr=@MetaAnnotation("yyy"))
     * 可以认为上面这个@MetaAnnotation是MetaAnnotation类的一个实例对象,调用代码如下:
     * MEtaAnnotation ma=nyAnnotation.annotationAttr();
     * System.out.println(ma.value());
     *  注解的详细语法可以通过java语言规范了解,即看java的language specification.

       示例:

@ItcastAnnotation(annotionAttr=@MetaAnnotation(value = "flx"),color="red",value="abc",arrayAttr={1,2,3})  
public class AnnotationTest { 

	
	@SuppressWarnings("deprecation") 
	@ItcastAnnotation("xyz")
	public static void main(String[] args) {
		// TODO Auto-generated method stub
           System.runFinalizersOnExit(true);
          if( AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class)){
        	  ItcastAnnotation annotation=(ItcastAnnotation)AnnotationTest.class.getAnnotation(ItcastAnnotation.class);
               System.out.println(annotation.color()+annotation.value()); 
               System.out.println(annotation.arrayAttr().length); 
               System.out.println(annotation.arrayAttr().length); 
          } 
	} 

	public static void sayHello() {
		// TODO Auto-generated method stub
		System.out.println("hello world!");
	}

      

@Retention(RetentionPolicy.RUNTIME) 
@Target({ElementType.METHOD,ElementType.TYPE}) 
public @interface ItcastAnnotation {

	String color() default "blue"; 
	String value();
	int[] arrayAttr() default {3,4,5};
	//EnumTest.TrafficLamp lamp() default EnumTest.TrafficLamp; 
    MetaAnnotation annotionAttr() default @MetaAnnotation("1hm");
}

 

public @interface MetaAnnotation {

	String value(); 

}

 

            ------ android培训java培训、java基础学习技术总结、期待与您交流! ----------

分享到:
评论

相关推荐

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

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

    01_黑马程序员_张孝祥_Java基础加强_课程价值与目标介绍.zip

    【标题】"01_黑马程序员_张孝祥_Java基础加强_课程价值与目标介绍.zip" 提供的是一门由黑马程序员机构推出的Java基础强化课程,由讲师张孝祥主讲,旨在深入讲解Java编程的基础知识并进行能力提升。 【描述】中提到...

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

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

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

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

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

    总的来说,这份"黑马程序员_struts2框架开发2016版讲义和笔记资料"是一个全面学习和掌握Struts2框架的宝贵资源,涵盖了从基础到实践的所有重要方面,对于提升Java EE开发者的技能水平大有裨益。通过系统学习,开发者...

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

    《Hibernate框架开发详解——以黑马程序员2016版讲义和笔记为引导》 Hibernate,作为Java领域中广泛使用的对象关系映射(ORM)框架,极大地简化了数据库操作,使得开发者可以更专注于业务逻辑而不是繁琐的数据访问...

    SE_JAVA_EXP_E046.zip

    【SE_JAVA_EXP_E046.zip】是一个与Java编程相关的学习资源,它包含了易智教云课堂上一道练习题的满分答案。这道习题可能是面向正在学习Java编程的学生们,旨在帮助他们理解和掌握Java语言的核心概念和编程技巧。由于...

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

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

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

    《Spring框架2016版深度解析——基于黑马程序员_day2》 在Java开发领域,Spring框架无疑是最为广泛使用的轻量级应用框架之一。2016年,黑马程序员发布的Spring框架教程针对day2部分,深入讲解了该框架的核心概念和...

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

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

    下载 传智播客_Springmvc+Mybatis由浅入深全套视频教程

    黑马程序员主要面向互联网技术领域,提供高质量的技术培训课程,包括但不限于Java、Python、大数据、人工智能等多个方向。所提供的《SpringMVC+MyBatis由浅入深全套视频教程》旨在帮助学习者全面掌握这两种框架的...

    黑马程序员SpringMVC课堂笔记

    《黑马程序员SpringMVC课堂笔记》是一份详细记录了SpringMVC框架学习过程的资料,主要针对Java EE开发者,特别是那些希望通过黑马程序员的教程来提升自己SpringMVC技能的学员。SpringMVC作为Spring框架的重要组成...

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

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

    黑马程序员servlet笔记代码

    《黑马程序员servlet笔记代码》全面解析了Java Web开发中的核心组件——Servlet,以及与之相关的HTTP协议基础知识。本文将深入探讨这些知识点,帮助开发者更好地理解和应用Servlet技术。 首先,我们要理解HTTP(超...

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

    【标题】中的“2017黑马程序员第一天Hibernate讲义,笔记,源码”表明这是一个关于Hibernate框架的初学者教程,由知名的IT培训机构黑马程序员在2017年制作,内容可能包括讲义、学习笔记以及相关的源代码示例。...

    java注解代码java注解代码

    java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解...

    JAVA_sample_150.rar_JavaPOS_Sample.zi_java samp_java sample

    "JAVA_sample_150.rar_JavaPOS_Sample.zi_java samp_java sample"这个标题暗示了我们正在处理一个包含150个Java编程示例的压缩文件,这些示例可能覆盖了Java的基础和进阶特性,旨在帮助初学者更好地理解和掌握Java...

    黑马java教程知识点笔记整理

    【Java编程基础】 ...以上是黑马Java教程知识点笔记的主要内容,涵盖了Java编程的基础到进阶知识,是学习和巩固Java技能的重要参考资料。通过深入理解和实践这些知识点,开发者可以逐步提升Java编程能力。

Global site tag (gtag.js) - Google Analytics