溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java注解類型的語法標準是什么

發(fā)布時間:2022-01-07 09:42:45 來源:億速云 閱讀:137 作者:iii 欄目:編程語言

這篇文章主要介紹“Java注解類型的語法標準是什么”,在日常操作中,相信很多人在Java注解類型的語法標準是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java注解類型的語法標準是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

前言

XML作為配置文件受到了大部分程序員的喜愛,但也有人會偏愛使用注解,其實個人覺得選擇什么并不是重點,重點是要了解每一個技術(shù)誕生的本質(zhì);XML作為配置文件和代碼是“松耦合”的代碼描述,但是當XML配置文件過多時難以管理,同時IDE無法對XML配置文件的正確性進行校驗,增加測試難度;而注解則是“緊耦合”的代碼描述,它的目的是為了讓應(yīng)用更易于擴展的同時做到“零”配置。

一、什么是注解(Annotation)

注解即標注,是代碼中的元數(shù)據(jù)(元數(shù)據(jù):描述數(shù)據(jù)的數(shù)據(jù)),通過使用注解使得程序開發(fā)人員可以在不改變原有邏輯的情況下,在源文件中嵌入一些補充信息。請看以下代碼片段:

Java注解類型的語法標準是什么

對于初學者而言,其實經(jīng)常會看到類似代碼,心里會想@Override是什么鬼?其實它就是注解,在toString()方法上加入@Override,表示該注解下面的toString()方法必須重構(gòu)父類方法。

看到這里我想有人就會認為接下來我會和大家介紹各種各樣的注解了?!我偏不!

二、注解類型的語法標準

注解是Java中一種特殊的類型,接下來我們來看一下如何設(shè)計一個注解類型。

1、語法標準:

public   @interface   注解類型名稱

{

[   數(shù)據(jù)類型    變量名 ()    [   default  初始值   ];   ]

}

注:

1)"[   ]"中的內(nèi)容可有可無,如果注解內(nèi)部為空,則表示當前注解為標識注解。

2)注解中智能包含變量,不能包含方法。

3)注解是代碼里的特殊標記,不可以單獨使用,需要配合類或接口一起使用。

4)注解類型可以被用來為程序元素設(shè)置元數(shù)據(jù)(程序元素:類、方法、成員變量等)。

2、案例:設(shè)計注解類型Testable,由該注解標識的方法為可測試方法。該注解內(nèi)部為空,表示該注解為標識注解。

public  @interface  Testable

{

}

public class Test

{

@Testable

public void info()

{

System.out.println(“我是info方法”);

}

public void info1()

{

System.out.println(“我是info1方法”);

}

}

該類中加入@Testable注解,表示info方法為可被執(zhí)行到的方法,僅僅是描述該方法是可被執(zhí)行的方法而已,并不會有任何動態(tài)交互能力,如果想要達成該注解的作用必須要編寫配套的Java應(yīng)用程序,具體代碼可參考如下代碼。大家可以思考,如果想要解析一個類的內(nèi)部結(jié)構(gòu),我們可以通過什么技術(shù)來實現(xiàn)呢?答案是:反射機制(接下來這一段有關(guān)于反射機制的相關(guān)內(nèi)容不清楚的朋友們,按照下面代碼進行調(diào)試,具體反射機制的相關(guān)知識稍后會發(fā)布)。

在java.lang.reflect包中常見的具有反射功能的工具類:Method(方法類)、Field(字段類)、Constructor(構(gòu)造方法類)等。以上這些工具類擴充了讀取運行時注解的能力,即實現(xiàn)java.lang.annotation.AnnotatedElement接口;該接口是所有程序元素的父接口,該接口中提供了用于獲取注解信息的相關(guān)方法。

  • getAnnotation(Class<T> annotationClass):返回該程序元素上的、指定類型的注解,如果該類型的注解不存在,則返回null

  • Annotation []  getAnnotations():返回該程序元素上存在的所有注解。

  • Annotation是所有注解的父接口,默認情況下任何一個接口類型都實現(xiàn)該接口。

  • boolean isAnnotationPresent(Class<? Extends Annotation> annotationClass):判斷該程序元素上是否包含指定類型的注解,存在則返回true,否則返回false。

代碼參考:解析Test類,并執(zhí)行帶有@Testable標識的方法。

import java.lang.reflect.Method;

public class UseTest

{

public static void main(String[] args)throws Exception

{

Class c=Class.forName(“Test”);

Object o=c.newInstance();

Method[] me=c.getDeclaredMethods();

for(Method temp:me)

{

if(temp.isAnnotationPresent(Testable.class))

temp.invoke(o,new Object[0]);

}

}

}

大家可以運行程序看一下效果

到此,關(guān)于“Java注解類型的語法標準是什么”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI