自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java元注解最全詳解(四大常用Java元注解)

開發(fā) 前端
Java元注解是java API提供的,是用于修飾注解的注解。通過使用Java元注解,可以為注解指定:作用范圍、生命周期、是否可重復(fù)和是否繼承等信息,從而提高注解的靈活性和可擴(kuò)展性。

Java元注解

Java元注解是java API提供的,是用于修飾注解的注解。

通過使用Java元注解,可以為注解指定:作用范圍、生命周期、是否可重復(fù)和是否繼承等信息,從而提高注解的靈活性和可擴(kuò)展性。

Java元注解分類

Java元注解是包括:@Retention、@Target、@Documented、@Inherited等。

如下圖所示:

圖片圖片

這些元注解包括:

  • @Retention:用來指定注解的保留期限,可以設(shè)置為SOURCE、CLASS或RUNTIME。
  • @Target:用來指定注解可以應(yīng)用于哪些程序元素,包括類、方法、變量、參數(shù)等。默認(rèn)情況下,注解可以應(yīng)用于所有程序元素。
  • @Documented:用來指定注解是否出現(xiàn)在Java文檔中。
  • @Inherited:用來指定子類是否繼承父類的注解。

下面我就分別來詳解4大Java元注解@mikechen

1.@Target

@Target用于指定注解的作用范圍,它的取值包括:

圖片圖片

  • ElementType.TYPE:用于注解類、接口、枚舉和注解類型。
  • ElementType.FIELD:用于注解字段、枚舉常量。
  • ElementType.METHOD:用于注解方法。
  • ElementType.PARAMETER:用于注解方法參數(shù)。
  • ElementType.CONSTRUCTOR:用于注解構(gòu)造器。
  • ElementType.LOCAL_VARIABLE:用于注解局部變量。
  • ElementType.ANNOTATION_TYPE:用于注解其他注解類型。
  • ElementType.PACKAGE:用于注解包。

@Target示例:

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


@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD})
public @interface MyAnnotation {
    // ...
}

這個示例中,@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD})指定了MyAnnotation注解可以用于類、字段和方法。

2.@Retention

@Retention用于指定注解的生命周期,它的取值包括:

圖片圖片

  • RetentionPolicy.SOURCE:注解只保留在源代碼中,編譯時被忽略。
  • RetentionPolicy.CLASS:注解被編譯到字節(jié)碼中,但運(yùn)行時被忽略(默認(rèn)值)。
  • RetentionPolicy.RUNTIME:注解在運(yùn)行時也保留,并可以被反射機(jī)制讀取。

@Retention示例:

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


@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
    // ...
}

這個示例中,@Retention指定了MyAnnotation注解的保留策略為RUNTIME,即可以在運(yùn)行時獲取到該注解的信息。

3.@Documented

@Documented指定注解是否包含在JavaDoc中,默認(rèn)情況下注解不會被包含在JavaDoc中。

如果想讓注解被包含在JavaDoc中,就需要使用@Documented注解。

@Documented示例:
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;


@Documented
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
    // ...
}

這個示例中,@Documented注解指定了MyAnnotation注解可以被包含在JavaDoc中。

4.@Inherited

@Inherited用于指定注解是否可以被子類繼承。

@Inherited示例:

import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;


@Inherited
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
    // ...
}
責(zé)任編輯:武曉燕 來源: mikechen的互聯(lián)網(wǎng)架構(gòu)
相關(guān)推薦

2021-12-30 12:30:01

Java注解編譯器

2022-09-29 00:24:30

元宇宙虛擬現(xiàn)實(shí)教育

2010-09-15 13:35:25

SwingHibernateStruts

2022-06-17 11:35:28

元宇宙科技交互能力

2022-02-11 14:50:12

元宇宙物聯(lián)網(wǎng)人工智能

2022-05-11 14:46:19

元宇宙虛擬世界人工智能

2011-06-22 08:38:35

Java EE

2011-10-21 13:59:48

Java云計算

2018-04-04 15:50:23

攢機(jī)主機(jī)配置

2021-07-16 10:32:33

前端元編程代碼

2010-07-19 10:05:07

jQuery

2020-09-24 10:00:50

SpringBoo

2010-08-05 10:22:46

Flex效果

2015-07-17 09:50:16

Carthage優(yōu)劣比較

2021-11-03 15:15:21

Go重構(gòu)技術(shù)

2010-07-02 14:34:53

UML類圖

2015-08-10 15:08:00

Java 對象

2011-10-21 09:17:04

Java

2010-11-02 13:18:10

EclipseJetBrains INetbeans

2010-06-03 09:09:10

Hadoop
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號