返回顶部
首页 > 资讯 > 精选 >Java 8注解语法有哪些
  • 317
分享到

Java 8注解语法有哪些

2023-06-02 14:06:35 317人浏览 独家记忆
摘要

这篇文章主要讲解了“Java 8注解语法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java 8注解语法有哪些”吧!注解语法注解由字符 @ 和注解名组成,即 @AnnotationN

这篇文章主要讲解了“Java 8注解语法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java 8注解语法有哪些”吧!

注解语法

注解由字符 @ 和注解名组成,即 @AnnotationName。当编译器发现这个语法该元素时,会把它解析为注解。例如:

@ExampleAnnotation
public class SampleClass {
}

上面的注解称为 ExampleAnnotation,标记在 SampleClass 上。

注解可以包含属性,在声明注解时以键值对的形式给出。例如: 

@ExampleAnnotation(name = ”first name”, age = 35)
public void simpleMethod() {
}

请注意,这里 ExampleAnnotation 是一个方法注解。如果注解只包含一个属性,在声明注解时可以忽略属性名。示例如下:

@ExampleAnnotation(“I am the only property”)
public void simpleMethod() {
}

一个元素可以使用多个注解。比如下面这个示例:

@Annotation1
@Annotation2(“Another Annotation”)
public class SimpleClass {
}

从 J2SE 8 开始,可以为同一个元素多次使用相同的注解,例如:

@ExampleAnnotation(“Annotation used”)
@ExampleAnnotation(“Annotation repeated”)
public class SimpleClass {
}

在 @Repeatable 部分会对此进行详细地讨论。

Java 预定义注解

Java 支持一组预先定义好的注解。下面介绍了Java Core 中提供的注解:

@Retention:

  • SOURCE:注解仅在源代码中可用。编译器和 JVM 会忽略此注解,因此在运行时不可用;

  • CLASS:编译器会处理该注解,但 JVM 不会处理,因此在运行时不可用;

  • RUNTIME:JVM 会处理该注解,可以在运行时使用。

@Target:

  • ANNOTATION_TYPE:可修饰其他注解;

  • CONSTRUCTOR:可以修饰构造函数;

  • FIELD:可以修饰字段或属性;

  • LOCAL_VARIABLE:可以修饰局部变量;

  • METHOD:可以修饰 method;

  • PACKAGE:可以修饰 package 声明;

  • PARAMETER:可以修饰方法参数;

  • TYPE:可以修饰 Class、Interface、Annotation 或 enum 声明;

  • PACKAGE:可以修饰 package 声明;

  • TYPE_PARAMETER:可以修饰参数声明;

  • TYPE_USE:可以修饰任何类型。

@Documented:@Retention (RetentionPolicy.RUNTIME)
@Target (ElementType.TYPE_USE)
@Repeatable (RepeatableAnnotationContainer.class)
public @interface RepeatableAnnotation() {
   String values();
}

RepeatableAnnotation可以重复修饰元素。

接下来,定义 RepeatableAnnotationContainer注解类型。这是一个注解类型容器,包含一个 RepeatableAnnotation 类型的数组

public @interface RepeatableAnnotationContainer {
   RepeatableAnnotation [] value();
}

现在,Repeatable 可以元素进行多次注释。

@RepeatableAnnotation (“I am annotating the class”)
@RepeatableAnnotation (“I am annotating the class again”)
@RepeatableAnnotation (“I am annotating the classfor the third time”)
publicclass RepeatedAnnotationExample {function(){   //外汇跟单www.gendan5.com}

在程序中要获取注解中的值,先要获取容器中的数组,数组的每个元素将包含一个值。例如:

@RepeatableAnnotation (“I am annotating the class”)
@RepeatableAnnotation (“I am annotating the class again”)
@RepeatableAnnotation(“I am annotating the class for the third time”)
public class RepeatableAnnotationExample {
   public static void main(String [] args) {
       Class object = RepeatableAnnotationExample.class
       Annotation[] annotations = object.getAnnotations();
for (Annotation annotation : annotations) {
   RepeatableAnnotationContainer rac = (RepeatableAnnotationContainer) annotation;
   RepeatableAnnotation [] raArray = rac.value();
   for (RepeatableAnnotation ra : raArray) {
       System.out.println(ra.value);
   }
}
}
}

执行结果:

I am annotating the class
I am annotating the class again
I am annotating the class for the third time.

类型注解

Java 8发布后,注解可以用于任何类型(Type),这意味着只要可以使用类型的地方就能使用注解。例如,使用新运算符创建类实例、类型转换、用 implements 实现接口、抛出异常等,这种注解称为类型注解。 

这种注解能够帮助分析与改进 Java 程序,提供更强大的类型检查。Java 8发布前,Java 没有提供类型检查框架。但是通过类型注解可以开发类型检查框架,对 Java 程序进行检查。

举例来说,假设我们希望特定变量在程序执行过程中始终不为 null。可以编写一个自定义插件 NonNull,并为特定变量加上该注解进行检查。变量声明如下:

@NonNull String notNullString;

编译代码时,如果发现任何可能将变量赋值为 null 的代码,编译器会检查潜在问题并给出告警。

自定义注解

Java 允许程序员自定义注解。自行定义注解的语法:

public @interface CustomAnnotation { }

上面的代码会创建一个 CustomAnnotation新注解。@Interface 关键字可用于自定义注解。

自定义注解时,必须设置两个必填属性。可以在定义中增加其他属性,但这两个重要属性是必需的,即@Retention (RetentionPolicy.RUNTIME)
@Target (ElementType.ELEMENT)
public @interface CustomAnnotation {
   public String name() default “Mr Bean”;
   public String dateOfBirth();
}

上面的自定义注解中,Retention Policy 为 RUNTIME,这表明该注解可以在 JVM 运行时使用;Target 设为 ELEMENT,表示该注解可以修饰任何元素与类型。 

此外,它还具有两个属性:name 与 dateOfBirth。其中,name 属性默认值为 Mr Bean, dateOfBirth 没有默认值。

注意,声明的 Method 没有带任何参数以及 throws 语句。此外,返回类型仅限于 String、class、enum、注解以及上述类型的数组。

现在,可以像下面这样使用自定义注解:

@CustomAnnotation (dateOfBirth = “1980-06-25”)
public class CustomAnnotatedClass {
}

同样,可以使用 @Target(ElementType.METHOD) 创建自定义注解修饰 method。

获取注解及属性

Java Reflection api 提供了几种方法,可以在运行时中从 class、method 和其他元素中获取注解。 

AnnotatedElement接口定义了所有的方法,其中最重要的一个是:

  • getAnnotations(): 返回指定元素的所有注解,包括定义元素时未明确写出的注解。

  • isAnnotationPresent(annotation): 检查注解在当前元素上是否可用。

  • getAnnotation(class): 获取 class 参数使用的注解,如果参数不存在注解返回 null。

这个 class 支持 java.lang.Class、java.lang.reflect.Method 和 java.lang.reflect.Field,基本上可以适用任何的 Java 元素。

下面的示例程序展示了如何获取自定义注解的相关信息:

public static void main(String [] args) {
Class object = CustomAnnotatedClass.class;
// 从类中获取所有注解
Annotation[] annotations = object.getAnnotations();
for( Annotation annotation : annotations ) {
System.out.println(annotation);
}
// 检查是否存在注解
if( object.isAnnotationPresent( CustomAnnotationClass.class ) ) {
// 获取需要的注解
Annotation annotation = object.getAnnotation(CustomAnnotationClass.class) ;
System.out.println(annotation);
}
// 获取注解属性
for(Annotation annotation : annotations) {
System.out.println(“name: “ + annotation.name());
System.out.println(“Date of Birth: “+ annotation.dateOfBirth());
}
// 对所有方法执行相同的操作
for( Method method : object.getDeclaredMethods() ) {
if( method.isAnnotationPresent( CustomAnnotationMethod.class ) ) {
Annotation annotation = method.getAnnotation(CustomAnnotationMethod.class );
System.out.println( annotation );
}
}
}

感谢各位的阅读,以上就是“Java 8注解语法有哪些”的内容了,经过本文的学习后,相信大家对Java 8注解语法有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Java 8注解语法有哪些

本文链接: https://lsjlt.com/news/230383.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java 8注解语法有哪些
    这篇文章主要讲解了“Java 8注解语法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java 8注解语法有哪些”吧!注解语法注解由字符 @ 和注解名组成,即 @AnnotationN...
    99+
    2023-06-02
  • java有哪些注解
    java中常用的注解有:1.@Override,重写;2.@Deprecation,弃用;3.@SuppviseWarnings,警告信息;4.@Return,提示信息;5.@Documented,标注生成javadoc的时候是否会被记录;...
    99+
    2024-04-02
  • java元注解有哪些
    java中的元注解有:1.@Retention,2.@Target;3.@Document;4.@Inherited;java中的元注解有以下几种@Retentionjava中@Retention注解的作用是定义注解的保留策略,常用于用于对...
    99+
    2024-04-02
  • Java的注解有哪些
    本篇内容主要讲解“Java的注解有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java的注解有哪些”吧!一、什么是注解我们大家都知道Java代码中使用注释是为了向以后阅读这份代码的人解释说...
    99+
    2023-06-17
  • JAVA 8新特性有哪些
    这篇文章主要介绍“JAVA 8新特性有哪些”,在日常操作中,相信很多人在JAVA 8新特性有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JAVA 8新特性有哪些”的疑惑...
    99+
    2024-04-02
  • java有哪些语法糖
    java中的语法糖有:1.lambda表达式;2.可变参数;3.条件编译;4.switch;5.增强for循环;6.泛型;java中的语法糖有以下几种lambda表达式public void lambdaTest() {List list ...
    99+
    2024-04-02
  • java中有哪些Lombok注解
    本篇文章为大家展示了java中有哪些Lombok注解,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。常用的java框架有哪些1.SpringMVC,Spring Web MVC是一种基于Java的实现...
    99+
    2023-06-14
  • java废弃注解有哪些
    在Java中,废弃注解用于标识一个类、方法、字段或参数已经被废弃,不再推荐使用。以下是一些常见的废弃注解:1. @Deprecate...
    99+
    2023-10-11
    java
  • java常用注解有哪些
    Java常用注解包括:1. @Override:用于标注方法覆盖父类方法。2. @Deprecated:用于标注不推荐使用的方法或类...
    99+
    2023-05-29
    java常用注解 java
  • Java 8 - 类型注解
    理解Java 8 类型注解需理解几个问题: @pdai注解在JDK哪个版本中出现的,可以在哪些地方用注解什么是类型注解类型注解的作用是什么为什么会出现类型注解(JSR308)Java 8 - 类型注解什么是类型注解类型注解的作用类型注解向下...
    99+
    2022-12-02
    java框架 java全栈 java学习路线 java全栈知识 java面试 知识体系 java技术体系 java编程
  • Java 8 - 重复注解
    理解Java 8 重复注解需理解几个问题: @pdaiJdk8之前对重复注解是怎么做的Jdk8对重复注解添加了什么支持Java 8 - 重复注解什么是重复注解JDK8之前Jdk8重复注解总结# 什么是重复注解允许在同一申明类型(类,属性,或...
    99+
    2022-12-02
    java框架 java全栈 java学习路线 java全栈知识 java面试 知识体系 java技术体系 java编程
  • java 7和java 8的区别有哪些
    相对于java7,Java8的新特性如下:一、接口的默认方法Java 8允许给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法。二、Lambda 表达式三、函数式接口四、方法与构造函数引用五、Lam...
    99+
    2019-09-10
    java入门 java 7 java 8 区别
  • JAVA语法规则有哪些
    今天小编给大家分享一下JAVA语法规则有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。//多态 定义:是指一个多态引用可...
    99+
    2023-06-03
  • JAVA语法要点有哪些
    这篇文章主要为大家展示了“JAVA语法要点有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JAVA语法要点有哪些”这篇文章吧。1.关于变量自己++变量自己++:如i++,那么输出i的时候,无...
    99+
    2023-06-02
  • java中注解有哪些类型
    java中注解有哪些类型?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3. 客户端开发...
    99+
    2023-06-14
  • java中基本注解有哪些
    这篇文章主要讲解了“java中基本注解有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java中基本注解有哪些”吧!1、java.lang.Override是一个标记类型注解,它被用作标...
    99+
    2023-06-20
  • Java 8语法上有什么改变
    这篇文章主要为大家展示了“Java 8语法上有什么改变”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java 8语法上有什么改变”这篇文章吧。鉴于Java 7 SE(标准版)现已正式发布,甲骨文...
    99+
    2023-06-17
  • Java 8 的头疼问题都有哪些
    这篇文章将为大家详细讲解有关Java 8 的头疼问题都有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1. 并行Streams实际上可能会降低你的性能Java8带来了最让人期待的新特性之...
    99+
    2023-06-17
  • Java基础中注释方法有哪些
    小编给大家分享一下Java基础中注释方法有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!本教程操作环境:windows7系统、java10版,DELL G3电...
    99+
    2023-06-14
  • java注解的主要作用有哪些
    Java注解的主要作用有以下几个: 提供元数据:注解可以附加在类、方法、字段等元素上,用来提供关于这些元素的额外信息。这些信息可...
    99+
    2024-02-29
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作