日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java基础——注解

發布時間:2024/4/17 java 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java基础——注解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、概述

   引自百度百科:

定義:注解(Annotation),也叫元數據。一種代碼級別的說明。它是JDK1.5及以后版本引入的一個特性,與類、接口、枚舉是在同一個層次。它可以聲明在包、類、字段、方法、局部變量、方法參數等的前面,用來對這些元素進行說明,注釋。

二、JDK內置注解

  Java提供了三種內建注解。

  1.?@Override——當我們想要復寫父類中的方法時,我們需要使用該注解去告知編譯器我們想要復寫這個方法。這樣一來當父類中的方法移除或者發生更改時編譯器將提示錯誤信息。

  2.?@Deprecated——當我們希望編譯器知道某一方法不建議使用時,我們應該使用這個注解。Java在javadoc 中推薦使用該注解,我們應該提供為什么該方法不推薦使用以及替代的方法。

  3.?@SuppressWarnings——這個僅僅是告訴編譯器忽略特定的警告信息,例如在泛型中使用原生數據類型。它的保留策略是SOURCE(譯者注:在源文件中有效)并且被編譯器丟棄。

三、元注解

  這里有四種類型的元注解:

  1.?@Documented?—— 指明擁有這個注解的元素可以被javadoc此類的工具文檔化。這種類型應該用于注解那些影響客戶使用帶注釋的元素聲明的類型。如果一種聲明使用Documented進行注解,這種類型的注解被作為被標注的程序成員的公共API。

  2.?@Target——指明該類型的注解可以注解的程序元素的范圍。該元注解的取值可以為TYPE,METHOD,CONSTRUCTOR,FIELD等。如果Target元注解沒有出現,那么定義的注解可以應用于程序的任何元素。

  3.?@Inherited——指明該注解類型被自動繼承。如果用戶在當前類中查詢這個元注解類型并且當前類的聲明中不包含這個元注解類型,那么也將自動查詢當前類的父類是否存在Inherited元注解,這個動作將被重復執行知道這個標注類型被找到,或者是查詢到頂層的父類。

  4.@Retention——指明了該Annotation被保留的時間長短。RetentionPolicy取值為SOURCE,CLASS,RUNTIME。

  更多詳細介紹與講解,參見(推薦):http://www.cnblogs.com/peida/archive/2013/04/24/3036689.html?? ?(包含注解處理器等,推薦!)

四、自定義注解

  還是像之前一樣,我們找到一個已經存在的注解來看看它怎么寫的(例如:@SuppressWarnings

  1.定義:可以看到使用 @interface來聲明一個注解

public @interface SuppressWarnings {

  2.成員:注意定義的格式,后面需要帶小括號,如果需要默認值,可以后接default ""等形式

String[] value();

  示例:

?

@Target({ ElementType.TYPE })//注解用在接口上 @Retention(RetentionPolicy.RUNTIME)//VM將在運行期也保留注釋,因此可以通過反射機制讀取注解的信息 @Component public @interface RpcService {String value(); }

?

  使用spring來使用自定義的注解:

@Component public class MyServer implements ApplicationContextAware {@SuppressWarnings("resource")public static void main(String[] args) {new ClassPathXmlApplicationContext("spring2.xml");}public void setApplicationContext(ApplicationContext ctx)throws BeansException {Map<String, Object> serviceBeanMap = ctx.getBeansWithAnnotation(RpcService.class);for (Object serviceBean : serviceBeanMap.values()) {try {Method method = serviceBean.getClass().getMethod("hello", new Class[]{String.class});Object invoke = method.invoke(serviceBean, "bbb");System.out.println(invoke);} catch (Exception e) {e.printStackTrace();} }} }

?

?

   //完整的數據類型支持,請參見上文鏈接

   //之后使用的注解中也可以看到,如果注解只有一個成員且為 value,可以省略,不用寫@RequestMapping(value = "/add"),可以簡寫為("/add")

轉載于:https://www.cnblogs.com/jiangbei/p/7582399.html

總結

以上是生活随笔為你收集整理的Java基础——注解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。