------ 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(); }
相关推荐
java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解...
java_注解作用java_注解作用
Matrix阅读调试,注解_Java_C++_下载.zip
SCA_Java通用注解和API规范.pdf
Java8新特性之类型注解_动力节点Java学院整理,动力节点口口相传的Java黄埔军校
Java Annotation注解技术
Java8新特性之重复注解_动力节点Java学院整理,动力节点口口相传的Java黄埔军校
NULL 博文链接:https://840198532-qq-com.iteye.com/blog/1490899
基于注解的Spring MVC的小例子,照着做就可以了
Java 注解技术详解
SCA JAVA通用注解和API规范读书笔记
枚举 定义 自实现枚举类 使用 enum 定义枚举类 实现接口的枚举类 枚举类的方法 注解
java 注解 反射 字节码 类加载 包括pdf资料以及全部源码文件,具有非常大参考价值和学习意义
·00. 尚硅谷_Java8新特性_源码、课件 ·01. 尚硅谷_Java8新特性_简介 ·02. 尚硅谷_Java8新特性_为什么使用 Lambda 表达式 ·03. 尚硅谷_Java8新特性_Lambda 基础语法 ·04... 尚硅谷_Java8新特性_重复注解与类型注解
此代码是IS0 13818-5 MPEG2系统层协议分析代码,经过我的一点修改,现在终于可以在VC++ 6.0下编译运行, 发布上来献给那些为了理解MPEG2系统层协议而苦苦加班的程序员。为了可以在windows下编译,我修改了部分操作...
java 自定义注解验证 可自己添加所需要的注解,本案例中只写了三个自定义注解类 本案例只花了半天时间,如有不好之处请多提提意见。谢谢!
动力节点的Java课程适合绝对零基础的观看,教程中讲解了Java开发环境搭建、Java的基础语法、Java的面向对象。每一个知识点都讲解的非常细腻,由浅入深。适合非计算机专业,想转行做Java开发的朋友,或者想让Java基础...
张孝祥Java高新技术_73_源代码,全套视频的源代码,非常适合初学者学习保存,可以在用的时候直接拿来用,反射、数组、枚举、类加载器、注解、泛型、AOP等等
NULL 博文链接:https://lsz1023-126-com.iteye.com/blog/2048234
Java注解实现