您的位置:首页 > 职场人生

黑马程序员--基础加强--第七篇--注解

2014-01-18 19:06 477 查看
ASP.Net+Android+IOS开发.Net培训期待与您交流!

1,注解是什么?

注解相当于一种标记,其实是一种类,在程序中调用某个注解,相当于调用某个类。在程序中加了注解就等于为程序加了某种标记,没加则没有这种标记。

以后,javac编译器,开发工具和应用程序,可以用反射来了解你的类及各种元素上是否有无何种标记,看你有什么标记,就去干相应的事儿。

标记可以加在包,类,字段,方法,方法的参数以及局部变量上。常见的注解是@SuppressWarning @overwrite @Deprecated

@SuppressWarning

@SuppressWarnings("Deprecated")//取消编译器对main中过时方法的警告
public static void main(String[] args) {
System.runFinalizersOnExit(true);
}


@Deprecated

@Deprecated//把下面方法写成过时的
public static void sayHello(){
System.out.println("Hi");
}
@Overwrite

@Override//这个还可以提示所写的类是不是重写
public boolean equals(Object obj){
System.out.println(obj);
return false;
}


2,注解在程序中有什么实际用途呢?

可以类中是否有注解

package Annotation;
public class AnnotationTest {

/**
* @param args
*/
@SuppressWarnings("Deprecated")//取消编译器对main中过时方法的警告
public static void main(String[] args) {
System.runFinalizersOnExit(true);
if(AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class)){
ItcastAnnotation annotation = AnnotationTest.class.getAnnotation(ItcastAnnotation.class);
System.out.println(annotation);

}
}
package Annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
//元注解 元信息 元数据
@Retention(RetentionPolicy.RUNTIME)//注解的生命周期   SOURCE  CLASS
@Target({ElementType.METHOD,ElementType.TYPE})
public @interface ItcastAnnotation {
}


为注解添加属性

属性就相当于注解的详细信息

可以添加方法,数组,枚举,甚至还可以添加注解

package Annotation;
@ItcastAnnotation(annotationAttr=@MetaAnnotation("fix"),arrayAttr={1,2,3})
public class AnnotationTest {

/**
* @param args
*/
@SuppressWarnings("Deprecated")//取消编译器对main中过时方法的警告
public static void main(String[] args) {
System.runFinalizersOnExit(true);
if(AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class)){
ItcastAnnotation annotation = AnnotationTest.class.getAnnotation(ItcastAnnotation.class);
System.out.println(annotation.color());//取属性应该使用方法的方式调用
System.out.println(annotation.value());
System.out.println(annotation.arrayAttr().length);//数组
System.out.println(annotation.annotationAttr().value());//注解
}
}


package Annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
//元注解 元信息 元数据
@Retention(RetentionPolicy.RUNTIME)//注解的生命周期
@Target({ElementType.METHOD,ElementType.TYPE})
public @interface ItcastAnnotation {
String color() default "blue";
String value() default "xyz";
int[] arrayAttr();//如果数组只有一个数据,可以省略大括
MetaAnnotation annotationAttr() default @MetaAnnotation("ltm");//注解的属性还是
}


ASP.Net+Android+IOS开发.Net培训期待与您交流!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: