`

java注解原理

    博客分类:
  • java
阅读更多

注解的基本概念和原理

注解(Annotation)提供了一种安全的类似注释的机制,为我们在代码中添加信息,提供了一种形式化的方法,使我们可以在稍后某个时刻方便的使用这些数据(通过解析注解来使用这些数据)。

 

元注解是java API提供,是专门用来定义注解的注解。

四个元注解分别是:@Target,@Retention,@Documented,@Inherited 

 

实现注解需要三个条件:

注解声明使用注解的元素注解解释器

 

注解声明

package com.test;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 注解声明 自定义注解,用来配置方法
 * 
 * @author 窗外赏雪
 */
@Retention(RetentionPolicy.RUNTIME)
// 表示注解在运行时依然存在
@Target(ElementType.METHOD)
// 表示注解可以被使用于方法上
public @interface CustomAnnotation {

    String paramValue() default "窗外赏雪"; // 表示我的注解需要一个参数 名为"paramValue" 默认值为"johness"
}

 

使用注解的元素

package com.test;

/**
 * 使用注解的元素
 * 
 * @author 窗外赏雪
 */
public class UseAnnotation {

    // 普通的方法
    public void SayHelloNormal(String name) {
        System.out.println("Hello, " + name);
    }

    // 使用注解并传入参数的方法
    @CustomAnnotation(paramValue = "李白")
    public void SayHello(String name) {
        System.out.println("Hello, " + name);
    }

    // 使用注解并使用默认参数的方法
    @CustomAnnotation
    public void SayHelloDefault(String name) {
        System.out.println("Hello, " + name);
    }
}

 

注解解释器

package com.test;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/**
 * 注解解释器
 * 
 * @author 窗外赏雪
 */
public class AnnotionInterpreter {

    public AnnotionInterpreter() throws IllegalAccessException, IllegalArgumentException, InvocationTargetException{
        UseAnnotation element = new UseAnnotation(); // 初始化一个实例,用于方法调用
        Method[] methods = UseAnnotation.class.getDeclaredMethods(); // 获得所有方法

        for (Method method : methods) {
            CustomAnnotation annotationTmp = null;
            if ((annotationTmp = method.getAnnotation(CustomAnnotation.class)) != null) // 检测是否使用了我们的注解
            method.invoke(element, annotationTmp.paramValue()); // 如果使用了我们的注解,我们就把注解里的"paramValue"参数值作为方法参数来调用方法
            else method.invoke(element, "杜甫"); // 如果没有使用我们的注解,我们就需要使用普通的方式来调用方法了
        }
    }

}

 

测试

package com.test;

import java.lang.reflect.InvocationTargetException;

public class Test {

    public static void main(String[] args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException {
            new AnnotionInterpreter();
        
    }
}

 

分享到:
评论

相关推荐

    Java注解与反射原理说明

    Java注解(Annotation)是Java语言提供的一种元数据机制,允许程序员在代码中嵌入信息,这些信息可以被编译器、JVM或其他工具在编译时或运行时读取和处理。注解的主要用途包括代码的自我描述、编译器检查、运行时的...

    java注解深入理解

    Java注解是Java编程语言中的一个重要特性,它提供了一种元数据的方式,允许程序员在代码中插入额外的信息,这些信息可以被编译器或者运行时环境用来执行特定的任务。注解在现代Java开发中扮演了不可或缺的角色,尤其...

    Java 什么是注解及注解原理详细介绍

    Java注解,又称为元数据,是自JDK1.5版本起引入的一种特性,用于在代码中添加额外的信息,可以应用于包、类、接口、字段、方法参数以及局部变量等。注解的主要功能包括: 1. **生成文档**:通过在代码中使用特定的...

    java注解大全(非常全面)

    Java注解是Java编程语言中的...学习Java注解需要理解其原理,熟悉各个框架的注解规范,并通过实践来加深理解。这份"java注解大全"资料将引导你全面掌握这一强大的工具,无论是在日常开发还是面试准备中,都将大有裨益。

    JAVA JVM原理资料

    ### JAVA JVM原理资料知识点 #### 一、语言处理器的基本结构 **语言处理器**是指能够处理某种编程语言的工具,常见的包括编译器、解释器、IDE等。 1. **编译器的基本结构**: - **词法分析器**:将源代码分割成...

    java 自定义注解验证

    首先,我们需要理解Java注解的基本原理。注解是一种元数据,它提供了一种安全的方法来将信息附加到代码中,而不直接影响代码的执行。Java提供了内置的注解,如`@Override`、`@Deprecated`等,但自定义注解允许我们...

    Java注解机制之Spring自动装配实现原理详解

    Java注解机制之Spring自动装配实现原理详解 Java注解机制是Java语言中的一种元数据 Facility,提供了一种在编译期和运行期对Java代码进行标记和描述的机制, Spring框架中使用Java注解机制来实现自动装配功能。自动...

    Java注释模板使用

    - 对于复杂或关键的代码段,注释应详细解释其工作原理和意图。 - 避免无用注释,即代码已经很清晰,注释反而增加阅读负担的情况。 - 定期更新注释,以反映代码的最新状态,防止注释过时。 6. **Javadoc规范**: ...

    java反射原理详解

    7. **注解处理**:反射机制也支持在运行时检查类、方法或字段上的注解,通过`getAnnotations()`或`isAnnotationPresent()`等方法,我们可以获取和处理注解信息,实现动态行为。 8. **安全性与性能**:虽然反射提供...

    java注解使用例子

    Java注解(Annotation)是Java语言提供的一种元数据机制,用于向编译器、JVM或者第三方工具提供信息。在Java程序中,注解可以被附加到类、接口、方法、变量等元素上,用于执行代码检查、生成代码、部署等任务。本篇...

    java通用注解API

    通过阅读《Java通用注解和API规范.pdf》这份文档,你可以更深入地理解Java注解的原理、使用方法以及最佳实践,从而在实际开发中更好地利用这一强大的工具。这份文档涵盖了从基础概念到高级特性的全面内容,对于Java...

    LL(1)语法分析器代码java编译原理,带注释,可运行借鉴.pdf

    LL(1) 语法分析器代码 Java 编译原理 本资源是一个 LL(1) 语法分析器的 Java 实现代码,带有详细的注释和可运行的示例代码。该代码实现了一个语法分析器,能够识别和解析输入的字符串,并输出解析结果。 LL(1) ...

    Java Annotation注解技术

    Java Annotation注解技术是自Java SE 5.0版本引入的一种元编程机制,它允许程序员在源代码的各个层面(如类、方法、变量等)添加元数据,以供编译器、JVM或第三方工具在编译时或运行时进行处理。Annotation简化了...

    对Spring中注解怎么实现的一些基本原理

    本文将深入探讨Spring注解的基本原理,包括它们如何被解析、处理以及如何影响应用程序的生命周期。 首先,我们需要了解注解在Java语言中的本质。注解是一种元数据,允许程序员在源代码中嵌入信息,这些信息可以被...

    java反编译工具以及去掉注释工具

    我们利用jd-gui反编译.classs代码之后,导出来的java源代码里面含有/**,其实这些标记是之前的java源码的注释,我们如何去掉这些标识了?...原理很简单,用java的正则表达式清理每个文件中的jd相关的注释

    编译原理 词法分析 语法分析 Java版【NFA DFA DFA最小化】[有注释版可下,请参看楼主其他分享]

    在编程和计算机科学领域,编译原理是理解计算机语言如何转化为机器可执行代码的基础。它主要涉及三个核心步骤:词法分析、语法分析和语义分析。本资源着重于词法分析和语法分析,特别是非确定性有限自动机(NFA)和...

    java offer来了原理篇.pdf

    原理篇》是一本针对Java程序员的技术面试用书,它详尽地总结了Java面试中常见的核心技术知识点,包括但不限于JVM原理、多线程编程、数据结构与算法、分布式系统设计等。在IT行业求职竞争激烈的背景下,本书为读者...

    Gradle中如何自定义实现Java注解处理器

    在本篇文章中,我们将深入探讨如何在Gradle项目中自定义实现Java注解处理器。 首先,我们需要了解注解处理器的工作原理。Java的注解处理器是在JDK的`javax.annotation.processing`包中定义的,主要由`Processor`...

    Spring IOC 原理 ,Java 反射实例,自定义注解

    同时,Spring还提供了基于XML、Java配置以及基于注解的配置方式,来定义对象及其依赖关系。 关于Java反射的实例,我们可以创建一个简单的例子。假设我们有一个接口`Service`和两个实现类`ServiceImpl1`、`...

    一种基于Java注解和反射机制的Excel文件读写操作方法.pdf

    根据提供的文件信息,我们可以梳理出以下知识点: ...以上知识点详细阐述了文档中提到的方法和技术原理,为理解和应用Java注解和反射机制在Excel文件读写操作中的实际应用提供了理论基础和技术指导。

Global site tag (gtag.js) - Google Analytics