玩轉(zhuǎn)Java注解:元注解、內(nèi)置注解、自定義注解的原理和實現(xiàn)
閱讀本文大概需要 4 分鐘。
來自:www.jianshu.com/p/ddd0b880641a
前言
我覺得注解可以分為三個部分來講:內(nèi)置注解,元注解,自定義注解。
一、內(nèi)置注解
1、@Override 重寫
//這個extends 不要在意,我寫上去只是為了更加方便直觀的去理解,Object是萬物之源,不寫也會默認(rèn)是其子類,不用解釋過多吧?
public?class?Annotation1?extends?Object{
????@Override
????public?String?toString?(){
????????return?"我是重新定義過的toString方法";
????}
}



2、@Deprecated 過期警告

public?class?Annotation1?extends?Object{
????public?static?void?main(String[]?args)?{
????????testDeprecated.toString1();
????}
}
class?testDeprecated?{
????@Deprecated
????public?static?String?toString1(){
????????return?"我是重新定義過的toString方法";
????}
}

3、@SuppressWarnings 忽略警告

public?class?Annotation1?extends?Object{
????public?static?void?main(String[]?args)?{
????}
????@SuppressWarnings("all")
????public?static?void?testSuppressWarnings(){
????????System.out.println("測試+testSuppressWarnings忽略警告!");
????}
}



二、元注解
1、@Retention 作用域-(常用)


SOURCE:源代碼時有用。
CLASS:class文件中有用,但會被jvm丟棄。
RUNTIME:運行時有用。
關(guān)系:RUNTIME>CLASS>SOURCE
2、@Documented 作用文檔

RetentionPolicy.RUNTIME,運行時有用!這個只是用來作為標(biāo)記,了解即可,在實際運行后會將該注解寫入javadoc中,方便查看。3、@Target 目標(biāo)-(常用)


@Target(ElementType.TYPE)——接口、類、枚舉、注解@Target(ElementType.FIELD)——字段、枚舉的常量@Target(ElementType.METHOD)——方法@Target(ElementType.PARAMETER)——方法參數(shù)@Target(ElementType.CONSTRUCTOR)?——構(gòu)造函數(shù)@Target(ElementType.LOCAL_VARIABLE)——局部變量@Target(ElementType.ANNOTATION_TYPE)——注解@Target(ElementType.PACKAGE)——包


4、@Inherited 繼承

5、新注解-(了解即可)
@SafeVarargs?- Java 7 開始支持,忽略任何使用參數(shù)為泛型變量的方法或構(gòu)造函數(shù)調(diào)用產(chǎn)生的警告。@FunctionalInterface?- Java 8 開始支持,標(biāo)識一個匿名函數(shù)或函數(shù)式接口。@Repeatable?- Java 8 開始支持,標(biāo)識某注解可以在同一個聲明上使用多次。
三、自定義注解
@Retention(value?=?RetentionPolicy.RUNTIME)
@Target(value?=?ElementType.METHOD)
@Inherited
@interface?myAnnotation?{
????String?name()?default?"";
????int?age()?default?18;
????String?like();
????String?IDCard()?default?"";
}


總結(jié)
Spring Boot官宣:正式棄用 Java 8,最低要 Java 17!
內(nèi)容包含Java基礎(chǔ)、JavaWeb、MySQL性能優(yōu)化、JVM、鎖、百萬并發(fā)、消息隊列、高性能緩存、反射、Spring全家桶原理、微服務(wù)、Zookeeper、數(shù)據(jù)結(jié)構(gòu)、限流熔斷降級......等技術(shù)棧!
?戳閱讀原文領(lǐng)??!? ? ? ? ? ? ? ??? ??? ? ? ? ? ? ? ? ? ?朕已閱?

