黑马程序员___java注解小结

----------- android培训java培训、java学习型技术博客、期待与您交流! ---------

注解是java 的一个新的类型(与接口很相似),它与类、接口、枚举是在同一个层次,它们都称作为java 的一个类型(TYPE)。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。它的作用非常的多,例如:进行编译检查、生成说明文档、代码分析等。
JDK提供的几个基本注解
a. @SuppressWarnings
该注解的作用是阻止编译器发出某些警告信息。
它可以有以下参数:
deprecation:过时的类或方法警告。
unchecked:执行了未检查的转换时警告。
fallthrough:当Switch 程序块直接通往下一种情况而没有Break 时的警告。
path:在类路径、源文件路径等中有不存在的路径时的警告。
serial:当在可序列化的类上缺少serialVersionUID 定义时的警告。
finally:任何finally 子句不能完成时的警告。
all:关于以上所有情况的警告。
b. @Deprecated
该注解的作用是标记某个过时的类或方法。
c. @Override
该注解用在方法前面,用来标识该方法是重写父类的某个方法。
元注解
a. @Retention
它是被定义在一个注解类的前面,用来说明该注解的生命周期。
它有以下参数:
RetentionPolicy.SOURCE:指定注解只保留在一个源文件当中。
RetentionPolicy.CLASS:指定注解只保留在一个class 文件中。
RetentionPolicy.RUNTIME:指定注解可以保留在程序运行期间。
b. @Target
它是被定义在一个注解类的前面,用来说明该注解可以被声明在哪些元素前。
它有以下参数:
ElementType.TYPE:说明该注解只能被声明在一个类前。
ElementType.FIELD:说明该注解只能被声明在一个类的字段前。
ElementType.METHOD:说明该注解只能被声明在一个类的方法前。
ElementType.PARAMETER:说明该注解只能被声明在一个方法参数前。
ElementType.CONSTRUCTOR:说明该注解只能声明在一个类的构造方法前。
ElementType.LOCAL_VARIABLE:说明该注解只能声明在一个局部变量前。
ElementType.ANNOTATION_TYPE:说明该注解只能声明在一个注解类型前。
ElementType.PACKAGE:说明该注解只能声明在一个包名前。
注解的生命周期
一个注解可以有三个生命周期,它默认的生命周期是保留在一个CLASS 文件,但它也可以由一个@Retetion 的元注解指定它的生命周期。
a. java 源文件
当在一个注解类前定义了一个@Retetion(RetentionPolicy.SOURCE)的注解,那么说明该注解只保留在一个源文件当中,当编译器将源文件编译成class 文件时,它不会将源文件中定义的注解保留在class 文件中。
b. class 文件中
当在一个注解类前定义了一个@Retetion(RetentionPolicy.CLASS)的注解,那么说明该注解只保留在一个class 文件当中,当加载class 文件到内存时,虚拟机会将注解去掉,从而在程序中不能访问。
c. 程序运行期间当在一个注解类前定义了一个@Retetion(RetentionPolicy.RUNTIME)的注解,那么说明该注解在程序运行期间都会存在内存当中。此时,我们可以通过反射来获得
定义在某个类上的所有注解。
注解的定义
一个简单的注解:
public @interface Annotation01 {
//定义公共的final静态属性
.....
//定以公共的抽象方法
......
}
a. 注解可以有哪些成员
注解和接口相似,它只能定义final 静态属性和公共抽象方法。
b. 注解的方法
1.方法前默认会加上public abstract
2.在声明方法时可以定义方法的默认返回值。
例如:
String color() default "blue";
String[] color() default {"blue", "red",......}
3.方法的返回值可以有哪些类型
8 种基本类型,String、Class、枚举、注解及这些类型的数组。
c. 使用注解(参照下面的注解使用)
注解的使用
注解的使用分为三个过程。
定义注解>得到注解
a. 定义注解(参照上面的注解定义)
b. 声明注解
1. 在哪些元素上声明注解
如果定义注解时没有指定@Target 元注解来限制它的使用范围,那么该注解可以使用在ElementType 枚举指定的任何一个元素前。否则,只能声明在@Target 元注解指定的元素前。
一般形式:
@注解名()
2. 对注解的方法的返回值进行赋值
对于注解中定义的每一个没有默认返回值的方法,在声明注解时必须对它的每一个方法的返回值进行赋值。
一般形式:
@注解名(方法名=方法返回值,、、、、、、)
如果方法返回的是一个数组时,那么将方法返回值写在{}符号里
@注解名(方法名={返回值1,返回值2,、、、、、、},、、、、、、、)
3. 对于只含有value 方法的注解,在声明注解时可以只写返回值。
c. 得到注解
对于生命周期为运行期间的注解,都可以通过反射获得该元素上的注解实例。
1、声明在一个类中的注解
可以通过该类Class 对象的getAnnotation 或getAnnotations 方法获得。
2、声明在一个字段中的注解
通过Field 对象的getAnnotation 或getAnnotations 方法获得
3、声明在一个方法中的注解
通过Method 对象的getAnnotation 或getAnnotations 方法获得
总结
注解可以看成是一个接口,注解实例就是一个实现了该接口的动态代理类。
注解大多是用做对某个类、方法、字段进行说明,标识的。以便在程序运行期间我们通过反射获得该字段或方法的注解的实例,来决定该做些什么处理或不该进行什么处理

----------- android培训java培训、java学习型技术博客、期待与您交流! ---------

时间: 2024-10-13 11:04:39

黑马程序员___java注解小结的相关文章

黑马程序员___多线程小结

----------- android培训.java培训.java学习型技术博客.期待与您交流! --------- 进程和线程 进程是正在进行中的程序,指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以有多个线程. Java程序的进程里有几个线程:主线程, 垃圾回收线程(后台线程) 线程是指进程中的一个执行任务(控制单元),一个进程中可以运行多个线程,多个线程可共享数据.多线程:在同一个进程中同时运行的多个任务;一个进程至少有一个线程,为了提高效率,可以在一个进程中

黑马程序员___java断言

----------- android培训.java培训.java学习型技术博客.期待与您交流! --------- 下面介绍一下断言在JAVA中的使用,JAVA是从JDK1.4才开始支持断言的(添加了关键字assert),请注意老版的JRE不支持. 断言概述   编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设  可以将断言看作是异常处理的一种高级形式  断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真  可以在任何时候启用和禁用断言验证,因此可以在测

黑马程序员——打印流小结

//打印流 /* 1.字节打印流,他可以获取的参数有: 1.File对象 2.字符串 3.字节输出流,可以实现自动刷新 2.字符打印流,他可以获取的参数有: 1.File对象 2.字符串 3.字节输出流,可以实现自动刷新 4.字符输出流,可以实现自动刷新 */ import java.io.*; import java.io.PrintWriter; import java.io.BufferedReader; public class Print{ public static void mai

黑马程序员——ARC机制小结

ARC全称为Automatic Reference Counting,是一种编译器特性. 在IOS5之前是没有ARC机制的,那时候内存管理全部要靠程序员自己来.有关内存管理的代码,简单却烦琐.而且还容易发生内存泄漏的错误.自从IOS5之后 编译器增加了自动在适当地方插入适当的retain.release.autorelease语句.你不再需要担心内存管理,因为编译器为你处理一切的内存管理方面的问题. 那么ARC是通过什么原理来管理内存问题的呢?它有一个判断的准则:只要没有强指针指向对象,就会释放

黑马程序员_java注解

注解(Annotation)简介 Annotation(注解)是JDK5.0及以后版本引入的一个特性.注解是java的一个新的类型(与接口很相似),它与类.接口.枚举 是在同一个层次,它们都称作为java的一个类型(TYPE).它可以声明在包.类.字段.方法.局部变量.方法参数等 的前面,用来对这些元素进行说明,注释.它的作用非常的多,例如:进行编译检查.生成说明文档.代码分析等. 注解的作用 注解可以看成是一个接口,注解实例就是一个实现了该接口的动态代理类. 注解大多是用做对某个类.方法.字段

黑马程序员___java反射机制

 ----------- android培训.java培训.java学习型技术博客.期待与您交流! --------- Java的反射机制的实现要借助于4个类:class,Constructor,Field,Method:其中class代表的时类对 象,Constructor-类的构造器对象,Field-类的属性对象,Method-类的方法对象.通过这四个对象我们可以粗略的看到一个类的各个组 成部分.Class:程序运行时,java运行时系统会对所有的对象进行运行时类型的处理.这项信息记录了每个

黑马程序员——OC学习小结------OC内存管理

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.计数器 1.方法的基本使用 1> retain :计数器+1,会返回对象本身 2> release :计数器-1,没有返回值 3> retainCount :获取当前的计数器 4> dealloc: * 当一个对象要被回收的时候,就会调用 * 一定要调用[super dealloc],这句调用要放在最后面 2.概念 1> 僵尸对象 :所占用内存已经被回收的对象,僵尸对象

黑马程序员——C语言小结------其他数据类型

一.定义指针变量指向sum函数 左边的int:指针变量p指向的函数返回int类型的数据 右边的(int, int):指针变量p指向的函数有2个int类型的形参 void sum(int a, int b) { } int (*p)(int, int); p= sum; (*p)是固定写法,代表指针变量p将来肯定是指向函数 左边的void:指针变量p指向的函数没有返回值 右边的():指针变量p指向的函数没有形参   类比OC中block的定义void (^myBlock) (参数) = ^{} 二

黑马程序员——OC学习小结------构造方法,分类,方法的重写,SEL

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.万能指针,能指向\操作任何OC对象 typedef (NSObject *) id; // id == NSObject 二.构造方法 1.完整地创建一个可用的对象: 1>分配存储空间  +alloc 2>初始化 –init init就是构造方法:用来初始化对象的方法,是个对象方法,- 开头 重写构造方法的目的:为了让对象创建出来,成员变量就会有一些固定的值 2.重写构造方法的注意点: