当前位置: 首页 > news >正文

网站建设公司招聘校园微网站建设方案ppt模板

网站建设公司招聘,校园微网站建设方案ppt模板,枣庄网站建设哪家强,网站规划 时间目录 1、什么是注解 2、自定义注解的定义 3、使用自定义注解 4、处理自定义注解 5、注解处理器 5.1、定义注解 5.2、实现注解处理器 6、应用场景 7、总结 1、什么是注解 Java注解(Annotation)又称为Java标注,是Java 5开始支持加入源代…

目录

1、什么是注解

2、自定义注解的定义

3、使用自定义注解

4、处理自定义注解

 5、注解处理器

5.1、定义注解

5.2、实现注解处理器

6、应用场景

7、总结


 

1、什么是注解

Java注解(Annotation)又称为Java标注,是Java 5开始支持加入源代码的特殊语法元数据。是附加在代码上的一些元信息,可以用于添加元数据、配置或行为到代码中,支持自定义注解,是一个强大的功能,自定义注解的实现包括定义注解、处理注解(通过反射或注解处理器)以及在实际代码中使用注解。注解相关类都包含在java.lang.annotation包中。

2、自定义注解的定义

自定义注解使用@interface关键字定义。常见的自定义注解分为四类,用在类上面、注解用在方法上面、注解用在属性上面、注解用在参数上面,注解可以包含元素(类似于方法),这些元素可以有默认值。

package com.gs.test.annotation;import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;//定义注解的作用目标(类,方法,字段等)
@Target(ElementType.METHOD)
//定义注解的生命周期(SOURCE,CLASS,RUNTIME)
@Retention(RetentionPolicy.RUNTIME)
public @interface CustomAnnotation {//定义注解的元素String value() default "default value";int count();
}
  • @Target:指定注解可以应用的目标(如方法、类、字段等)。常用值:

    • ElementType.METHOD:方法

    • ElementType.TYPE:类或接口

    • ElementType.FIELD:字段

    • ElementType.PARAMETER:参数

  • @Retention:指定注解的生命周期。常用值:

    • RetentionPolicy.SOURCE:仅保留在源码中,编译时丢弃。

    • RetentionPolicy.CLASS:保留到编译后的字节码中,但运行时不可见。

    • RetentionPolicy.RUNTIME:保留到运行时,可以通过反射读取。

3、使用自定义注解

定义好注解后,可以在代码中使用它。

package com.gs.test.annotation;public class MyService {@CustomAnnotation(value = "custom value", count = 3)public void myMethod(){System.out.println("executing myMethod");}
}

4、处理自定义注解

通过反射机制,可以在运行时读取注解信息并执行相应的逻辑。

示例:通过反射读取注解信息

package com.gs.test.annotation;import java.lang.reflect.Method;public class AnnotationProcessor {public static void main(String[] args) {// 获取目标类的Class对象Class<MyService> clazz = MyService.class;// 遍历类中的所有方法for (Method method : clazz.getDeclaredMethods()) {// 检查方法是否使用了自定义注解if (method.isAnnotationPresent(CustomAnnotation.class)) {// 获取注解实例CustomAnnotation annotation = method.getAnnotation(CustomAnnotation.class);// 读取注解的值String value = annotation.value();int count = annotation.count();System.out.println("Method: " + method.getName());System.out.println("Value: " + value);System.out.println("Count: " + count);// 根据注解的值执行逻辑for (int i = 0; i < count; i++) {System.out.println("Executing logic based on annotation: " + value);}}}}
}

 5、注解处理器

如果需要编译时处理注解,可以使用注解处理器(Annotation Processor)。注解处理器可以生成代码、验证代码或执行其他编译时任务。

示例:实现一个简单的注解处理器

5.1、定义注解

package com.gs.test.annotation;import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)//注解只在源码保留
public @interface GenerateToString {
}

5.2、实现注解处理器

package com.gs.test.annotation;import javax.annotation.processing.AbstractProcessor;
import javax.annotation.processing.RoundEnvironment;
import javax.annotation.processing.SupportedAnnotationTypes;
import javax.annotation.processing.SupportedSourceVersion;
import javax.lang.model.SourceVersion;
import javax.lang.model.element.TypeElement;
import java.util.Set;@SupportedAnnotationTypes("GenerateToString")
@SupportedSourceVersion(SourceVersion.RELEASE_8)
public class GenerateToStringProcessor extends AbstractProcessor {@Overridepublic boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {// 处理注解逻辑annotations.forEach(annotation -> {roundEnv.getElementsAnnotatedWith(annotation).forEach(element -> {String className = element.getSimpleName().toString();System.out.println("Generating toString() for class: " + className);});});return true;}
}

6、应用场景

自定义注解在实际开发中有广泛的应用场景,例如:

  • 框架开发:如Spring中的@Controller@Service等。

  • 代码生成:如Lombok的@Data@Getter等。

  • 验证逻辑:如自定义参数校验注解。

  • 日志记录:通过注解自动记录方法调用日志。

  • 权限控制:通过注解实现方法级别的权限校验。

7、总结

自定义注解的实现包括定义注解、使用注解和处理注解三个步骤。通过反射可以在运行时读取注解信息,而注解处理器可以在编译时处理注解。合理使用自定义注解可以显著提高代码的可读性和可维护性。

 

http://www.dtcms.com/a/458419.html

相关文章:

  • 徐州营销型网站制使开发一个网站成本
  • 【framebuffer】
  • 【PAG】一个PAGView和多个PAGImageView分别渲染多个pag文件
  • 专门做婚庆的网站有哪些广州市品牌网站建设企业
  • 上海市网站seo公司网站活动怎么做
  • 昆山网站制作公司网站建设征求意见通知
  • 网站备案 如何填网站开发三层
  • 西樵网站设计网页设计与制作 pdf
  • 海淀教育互动平台网站建设本溪市城乡住房建设厅网站
  • xxx网站建设策划书范文精通网站建设电子档
  • v-if和v-for在同一个元素上的使用
  • 电商平台介绍网站模板济南 网站推广
  • 百度网站两两学一做心得体会郑州 网站建设公司
  • 网站怎么做充值系统下载深圳设计公司深圳设计公司排名
  • 如何解决 pip install -r requirements.txt 无效可编辑项 ‘e .‘(-e 拼写错误)问题
  • 番禺网站制作技术wordpress模板不显示
  • 门户网站建设自查整改报告泊头网站建设价格
  • CMake进阶:解析自定义函数 / 宏的可变参数(ARGN)的指令cmake_parse_arguments
  • 中山市 有限公司网站建设页面设计制作网站
  • 洛宁县东宋乡城乡建设局网站怎样维护公司网站
  • 最新Kolmogorov-Arnold网络架构下的KANConv
  • 【C语言操作符终极指南】万字总结:从二进制到表达式求值,全方位解析+避坑指南
  • 大模型-扩散模型(Diffusion Model)原理讲解(5)
  • 基于51单片机的多功能电子万年历
  • iis中的网站启动不了湖南省郴州市宜章县邮政编码
  • 镇江网站建设活动方案c 做网站源码实例
  • 网站网页能自己做吗甘肃省建设稽查执法局网站
  • 家电维修企业网站源码台州椒江找人做网站
  • 小公司做网站wordpress login插件
  • 苏州网站建设最好网络安全监测服务