当前位置:首页 > 开发 > 编程语言 > Java > 正文

java-注解annotation

发表于: 2012-08-24   作者:dendy   来源:转载   浏览次数:
摘要: package cd.itcast.day2; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; /** * 注解 * * 注解的使用构成: 1,注解的
package cd.itcast.day2;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

/**
 * 注解
 * 
 * 注解的使用构成: 1,注解的申明 2,在类型(代码)上面打上注解 3,第三方的程序在使用打了注解的类型
 * 
 * 作业:自己设计一套文档标签,如果我在一个类上面加了这些标签,我把这个类作为参数传给一个方法,就能为这个类的注释生成一个API文档文件
 * 
 * @author Administrator
 * 
 */
public class AnnotationDemo {

	/**
	 * 使用Annotation(使用反射来得到标签实例) <A extends Annotation> A getAnnotation(Class<A>
	 * annotationClass):得到指定类型的注解实例 Annotation[] getAnnotations():得到该类型上面的所有注释实例
	 * Annotation[] getDeclaredAnnotations() :返回直接存在于此元素上的所有注释。 boolean
	 * isAnnotation() : 该类型是否是一个标签类型(Class) boolean isAnnotationPresent(Class<?
	 * extends Annotation> annotationClass) :判断该类型上面是否有指定的标签类型
	 * 
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		Class<User> c = User.class;
		// 说明:annotation也是一种类型
		// Class a=MyAnn.class;
		if (c.isAnnotationPresent(MyAnn.class)) {
			System.out.println("hello");
			MyAnn ann = c.getAnnotation(MyAnn.class);
			System.out.println(ann.name());
			System.out.println(Arrays.toString(ann.names()));
			System.out.println(ann.resetDay());

			OtherAnn other = ann.other();
			System.out.println("other   " + other.value());
		} else {
			System.out.println("fck");
		}

		Method m = c.getDeclaredMethod("getName");
		if (m.isAnnotationPresent(MyAnn.class)) {
			System.out.println("方法上面有标签");
		}
	}

	/**
	 * @SuppressWanings:去掉警告,(去掉警告的类型写在后面括号里面) 标签有自己定义的能放置的位置
	 */
	@SuppressWarnings(value = "deprecation")
	public void dateTest() {
		Date d = new Date();
		System.out.println(d.toLocaleString());
		AnnotationDemo dd = new AnnotationDemo();
		dd.someThing();
	}

	/**
	 * 标签里面可以有值, 1,一个常量值 2,一个数组
	 * 
	 * @Deprecated:方法过时
	 */
	@SuppressWarnings({ "rawtypes", "unused" })
	@Deprecated
	public void someThing() {
		List a = new ArrayList();
	}

	/**
	 * 注释一个标签。这个标签没有参数值
	 * 
	 * @Override:代表当前方法是覆盖一个父类的方法
	 */
	@Override()
	public String toString() {
		return super.toString();
	}

}

package cd.itcast.day2;

import java.lang.annotation.ElementType;

/**
 * 自定义一个注释
 * @author Administrator
 * 
 * @Retention:规定定义的这个标签保留到什么时候
 * @Target:规定定义的这个标签能加载哪些位置
 * ANNOTATION_TYPE:标签上面
 * Constructor:构造器上面
 * Field:字段
 * Local variable:局部变量
 * METHOD:方法/方法的返回类型
 * PACKAGE:包
 * Parmater:方法参数
 * TYPE:类/接口/枚举
 */
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnn {
	/**
	 * 在标签里面加参数 类型 属性名称() [default 类型的值]
	 * 注意:如果在标签里面仅有value这个属性要填,在使用的时候就可以忽略不写
	 */
	String name() default "itcast";
	
	String[] names() default {};
	
	String value();
	
	WeekDays resetDay();
	
	OtherAnn other();
	
}


package cd.itcast.day2;

public @interface OtherAnn {
	String value();
}

java-注解annotation

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
如果没有用来读取注解的方法和工作,那么注解也就不会比注释更有用处了。使用注解的过程中,很重要
背景知识: 从JDK5开始提供名为Annotation(注释)的功能,它被定义为JSR-175规范。注释是以“@注释
本文将向你介绍J2SE5.0中的新特性之一:注释(注解)。本文将从什么是注释;J2SE5.0中预定义的注释;
什么是注解(Annotation):   Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息
主键分类: 1. 内键注解(基本注解),定义于java.lang包下。 *限定重写父类的方法:@Override *表
一、概述 1.什么是注解(Annotation) Annotation(注解)就是Java提供了一种元程序中的元素关联任
  如果没有用来读取注解的方法和工作,那么注解也就不会比注释更有用处了。使用注解的过程中,很
 如果没有用来读取注解的方法和工作,那么注解也就不会比注释更有用处了。使用注解的过程中,很重
一、注解是jdk1.5后加入的新特性,jdk自带的Annotation类主要有三个: @SuppressWarnings,可用于隐藏
Spring AOP的注解方式在官网的doc文档里也有详细的说明:http://docs.spring.io/spring/docs/2.0.8/
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号