Java注解Annotation简介

注解定义和使用

注解定义为:

public @interface AnnotationName{
}

使用注解

@ AnnotationName
public void func(){
}

Java提供了4个元注解

@Retention:保留的阶段。

@Target:注解修饰的目标,可以说类,方法,成员变量,包。

@Documented:是否被javadoc提取成文的。

@Inherited:注解是否能继承。

自定义注解

注解的成员变量定义:

public @interface AnnotationName{
    String name() default "abc";
    int age() default 33;
    boolean flag();
}

其中default修饰的表示默认值。

  • 注意:Annotation修饰类,方法,成员变量后不会自己生效,不会对程序有任何影响。只有为这些注解提供处理的工具类才会有用。

实例

定义注解类

import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Testable {
    boolean isSkiped() default false;
    String name();
}

被注解修饰的类

public class Foo {
    public static void m1() {
        System.out.println("I am m1");
    }
    @Testable(isSkiped = false, name = "methond2")
    public static void m2() {
        System.out.println("I am m2");
    }
    @Testable(name = "methond3")
    public static void m3() {
        System.out.println("I am m3");
    }
    @Testable(isSkiped = true, name = "methond4")
    public static void m4() {
        System.out.println("I am m4");
    }
}

处理注解的工具类

import java.lang.reflect.*;
public class TestAnnotation {
    public static void main(String[] args) throws SecurityException,
            ClassNotFoundException, IllegalAccessException,
            IllegalArgumentException, InvocationTargetException {
        for (Method m : Class.forName("Foo").getMethods()) {
            if (m.isAnnotationPresent(Testable.class)) {
                System.out.print(m.getName()
                        + " is Annotation element, so invoke result is: ");
                m.invoke(null);
            } else {
                System.out.println(m.getName() + " is not Annotation element");
            }
        }
    }
}

输出:

m1 is not Annotation element
m2 is Annotation element, so invoke result is: I am m2
m3 is Annotation element, so invoke result is: I am m3
m4 is Annotation element, so invoke result is: I am m4
wait is not Annotation element
wait is not Annotation element
wait is not Annotation element
equals is not Annotation element
toString is not Annotation element
hashCode is not Annotation element
getClass is not Annotation element
notify is not Annotation element
notifyAll is not Annotation element
时间: 2024-08-25 02:20:11

Java注解Annotation简介的相关文章

Java注解Annotation(一)

Java注解Annotation(一)--简介 这一章首先简单介绍一下注解,下一章会给出一个注解应用的DEMO. 1. 元注解 元注解的作用是负责注解其他的注解. JDK1.5中,定义了4个标准的meta-annotation元注解类型,他们被用来提供对其它annotation注解类型作说明. @Target @Retention @Documented @Inherited 这些类型和它们所支持的类在java.lang.annotation包中可以找到. @Target @Target说明了A

java 注解Annotation

什么是注解? 注解,顾名思义,注解,就是对某一事物进行添加注释说明,会存放一些信息,这些信息可能对以后某个时段来说是很有用处的. java注解又叫java标注,java提供了一套机制,使得我们可以对方法.类.参数.包.域以及变量等添加标准(即附上某些信息).且在以后某个时段通过反射将标注的信息提取出来以供使用. 通过使用Annotation,程序开发人员可以在不改变的原有逻辑的情况下,在源文件嵌入一些补充的信息. Annotation可以用来修饰类.属性.方法,而且Annotation不影响程序

JAVA注解Annotation

JAVA注解Annotation JAVA注解Annotation 什么是注解 为什么要引入注解 JDK内建Annotation JDK元Annotation Annotation示例 自定义注解 提取Annotation信息 Annotation处理器编写 Annotation处理器处理异常 什么是注解? ??用一个词就可以描述注解,那就是元数据,即一种描述数据的数据.所以,可以说注解就是源代码的元数据.比如,下面这段代码: @Override publicString toString()

Java注解(Annotation)详解

转: Java注解(Annotation)详解 幻海流心 2018.05.23 15:20 字数 1775 阅读 380评论 0喜欢 1 Java注解(Annotation)详解 1.Annotation的概念 An annotation is a form of metadata, that can be added to Java source code. Classes, methods, variables, parameters and packages may be annotate

Java注解Annotation学习笔记

一.自定义注解 1. 使用关键字 @interface 2. 默认情况下,注解可以修饰 类.方法.接口等. 3. 如下为一个基本的注解例子: //注解中的成员变量非常像定义接口 public @interface MyAnnotation { //不带有默认值 String name(); //带有默认值 int age() default 20; } 4. Reflect中3个常见方法解读 getAnnotion(Class<T> annotationClass) 返回该元素上存在的,指定类

java注解(Annotation)解析

注解(Annotation)在java中应用非常广泛.它既能帮助我们在编码中减少错误,(比如最常见的Override注解),还可以帮助我们减少各种xml文件的配置,比如定义AOP切面用@AspectJ模式代替Schema模式,特别是最近接触了一点Spring MVC,每次编写Controller的时候用@RequestMapping(),@RequestParam,@ResponseBody等等. 我们所用的java中自带的注解都是定义好了的,直接拿来用,它就能发挥作用.当然了,自己也可以定义注

Java注解Annotation详解

注解是一种标记,在程序中加上某种注解就等于为程序打上了某种标记,在javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上是否存在标记,存在什么标记,就去干相应的事.标记可以加在包,类,字段,方法,方法的参数以及局部变量上. 自定义注解及其应用 1).定义一个最简单的注解 public @interface MyAnnotation {     //...... } 2).把注解加在某个类上: @MyAnnotation public class AnnotationTest{  

深入理解java 注解(Annotation)重版

近期项目需要做权限验证,高手们写了一个权限验证的框架,看了一遍代码,还是和高手有差距啊~ 权限框架用到了一些注解反射啥的,所以回头看看以前写的文章<深入理解java 注解(Annotation)>,转过来,再做一些补充,做备忘使用. 一.什么是注解? 懒得去打了,搞一份wiki上的解释,自己看吧(以前可能会翻译一下,现在懒了) Annotation的使用方式及自定义注解 首先扫下盲,元注解就是Annotation的元注解一共有4个,分别为:@Target.@Retention.@Documen

深入JAVA注解(Annotation):自定义注解 (转)

原文出自:http://blog.csdn.net/yjclsx/article/details/52101922 一.基础知识:元注解 要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法. 元注解: 元注解的作用就是负责注解其他注解.Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明.Java5.0定义的元注解: [email prote