最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javaSE基礎java自定義注解原理分析

 更新時間:2021年10月15日 11:08:18   作者:spring小楊  
這篇文章主要介紹了javaSE基礎對java自定義注解原理分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多度進步,早日升職加薪

注解在JavaSE中算是比較高級的一種用法了,為什么要學習注解,我想大概有以下幾個原因:

1. 可以更深層次地學習Java,理解Java的思想.

2. 有了注解的基礎,能夠方便閱讀各種框架的源碼,比如hibernate,SpringMVC等等。里面就用到了大量的注解。即便無法閱讀源碼,以后使用這些框架,會有一種心理上的安全感。

3. 方便今后跟別人吹牛。(當然,這也很重要。)

好了,話不多說,我們開始吧。

1. 從注釋的角度來理解注解

我想了很久,最終決定以這個小標題作為第一節(jié)的標題,我們在編寫Java代碼的時候,為了讓我們的代碼看起來通俗易懂,就會加上注釋信息。

比如,我們寫一個方法,會標注上這個方法的作者,作用,版本等信息。是的,作為一個程序員,編寫優(yōu)雅的注釋是一個非常重要的好習慣。

例:

/**
 * 用于判斷是否是空字符串
 * 方法名:isEmpty
 * 創(chuàng)建人:剽悍一小兔
 * 時間:2016年9月21日-下午6:56:33
 * @param str
 * @return boolean
 */
public static boolean isEmpty(String str) {
    return null == str  || str.equals("")
            || str.matches("\\s*");
}

這是一個字符串判空的函數(shù),函數(shù)名為isEmpty,雖然看名字大概也能猜到它的作用,可是,一旦加上了注釋,瞬間就變得更加清晰了,不是嗎?

這種注釋,當代碼被執(zhí)行的時候,執(zhí)行機制會自動忽略掉他們,因為這些文字其實是給程序員看的,而不是給執(zhí)行機制看的。

寫注釋是一種美德。

那么,注解又是什么呢?

我個人對它的看法是:所謂的注解,就是寫給電腦看的高級注釋。

你可能經(jīng)常會看到代碼里面出現(xiàn)@XXX的標志,乍一看感覺挺高深的。反正我當年就是這種感覺,頭腦里第一個反應就是這肯定很難!

我還是那句話,如果你總想著復雜,那么就永遠看不到簡單。

我們寫注釋,是給人看的,而注解就是寫給電腦看的。就這么簡單。

這么說可能有點抽象,沒關系,我們來一個快速入門吧。

2.提出問題

新建一個Java項目

Paste_Image.png

項目名稱就叫做Annotation吧

Paste_Image.png

在src旁邊右鍵,新建一個util包,也就是工具包。

Paste_Image.png

弄一個專門處理日期的工具類

Paste_Image.png

隨便寫一個日期格式化的方法。

package util;
import java.util.Date;
import java.text.SimpleDateFormat;
public class DateUtil {	
	public static String formatDate( Date date , String formatPattern ){
		return new SimpleDateFormat(formatPattern).format(date);
	}
	
}

注意,導包的時候要是java.util.Date;,而不是java.sql.Date;

測試:

Date now = new Date();//獲取當前日期
System.out.println(now);
System.out.println(formatDate(now,"yyyy-MM-dd hh:mm:ss"));

控制臺打印:

Wed Sep 21 19:24:57 CST 2016
2016-09-21 07:24:57

這說明,我們寫的方法應該是正確的。

很好,那么接下來要解決一個什么問題呢?就是說,如果我想通過代碼來獲取關于這個方法的信息,那么該如何做呢?

寫注釋肯定是不行的,因為注釋是寫個程序員看的,電腦看不懂,更別提獲取注釋的內(nèi)容了,是吧?

于是,注解,這一種高級的注釋就出現(xiàn)了。

3.編寫注解

關于注解,要明確三個問題:

要給誰加注解???什么時候注解起作用?。恳⒔饽切〇|西呢?

因為是快速入門,所以大概知道這些就足夠了。

現(xiàn)在,我們來新建一個注解,毫無疑問,所謂的注解,它還是一個Java類,你不要被它嚇到。

新建一個注解包。

Paste_Image.png

new一個Annotation,就叫MethodNote,意思就是說,這個是加在方法上的,為了給方法加一些電腦能看得懂的說明。

Paste_Image.png

第一個問題是要給誰加注解???那么,這個注解類是需要加在方法上的,于是就這樣寫:

Paste_Image.png

這就表示,該注解要加在方法上。

接下來,讓我們來明確第二個問題:什么時候注解起作用?。?/p>

我們希望在程序運行的時候,注解發(fā)揮作用,就是說,當你的程序跑起來了,電腦才開始閱讀這些注解。

Paste_Image.png

這句話的意思就是說,我這個注解啊,是在程序跑起來的時候,RUNTIME嘛,就是跑起來的時候,才發(fā)揮作用的。

非常好,那么最后一個問題:要注解那些東西呢?

一個方法,最重要的信息包括:作用,創(chuàng)建時間,作者,版本,返回值等等。我們隨便抽取幾個,就作用和創(chuàng)建時間吧!

Paste_Image.png

這種寫法有點類似于寫接口的方法。

好了,我們的第一個注解就編寫完成了!寫好了就馬上用唄,現(xiàn)在我們給日期格式化的方法加上咱自己編寫的注解。

@MethodNote(createTime = "2016-9-21")
public static String formatDate(Date date , String formatPattern){
	return new SimpleDateFormat(formatPattern).format(date);
}

這就是所謂的注解,其實也很簡單的吧。就是這么來的,它歸根到底還是一個Java類。

4.通過Java反射獲取方法的注解信息

好了,回到正題,我們已經(jīng)對formatDate方法進行了注解,那么,既然這個注解是寫給電腦看的,那么電腦就肯定有辦法在其他Java類中獲得這些信息,對吧?

如何獲得呢,對了,用反射機制。

上代碼:

public static void main(String[] args) throws NoSuchMethodException, SecurityException {
	Class classOfDateUtil = DateUtil.class;
	Method formatDate = classOfDateUtil.getMethod("formatDate", Date.class,String.class);
	MethodNote methodNote = formatDate.getAnnotation(MethodNote.class);
	System.out.println("方法描述:" + methodNote.description());
	System.out.println("創(chuàng)建日期:" + methodNote.createTime());
}

結果:

方法描述:作者很懶,沒有寫本方法的作用。
創(chuàng)建日期:2016-9-21

結束

本章對Java自定義注解做了一個快速入門,希望對你有所幫助,更多關于java自定義注解的資料請關注腳本之家其它相關文章!

相關文章

  • Java即將引入新對象類型來解決內(nèi)存使用問題

    Java即將引入新對象類型來解決內(nèi)存使用問題

    這篇文章主要介紹了Java即將引入新對象類型來解決內(nèi)存使用問題,文章通過圍繞主題的相關資料展開詳細內(nèi)容,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • JavaWeb簡單文件上傳流程的實戰(zhàn)記錄

    JavaWeb簡單文件上傳流程的實戰(zhàn)記錄

    在Web應用系統(tǒng)開發(fā)中,文件上傳和下載功能是非常常用的功能,下面這篇文章主要給大家介紹了關于JavaWeb實現(xiàn)簡單文件上傳流程的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-03-03
  • springboot swagger2注解使用的教程

    springboot swagger2注解使用的教程

    這篇文章主要介紹了springboot swagger2注解使用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • 使用Mybatis Generator結合Ant腳本快速自動生成Model、Mapper等文件的方法

    使用Mybatis Generator結合Ant腳本快速自動生成Model、Mapper等文件的方法

    這篇文章主要介紹了使用Mybatis Generator結合Ant腳本快速自動生成Model、Mapper等文件的方法的相關資料,需要的朋友可以參考下
    2016-06-06
  • java分頁工具類的使用方法

    java分頁工具類的使用方法

    這篇文章主要為大家詳細介紹了java分頁工具類的使用方法,穩(wěn)定的分頁效果,包括導航頁碼功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Java?中的?getDeclaredFields()使用與原理解析

    Java?中的?getDeclaredFields()使用與原理解析

    在Java反射機制中,getDeclaredFields()用于獲取類的所有字段,包括私有字段,通過反射,可以在運行時動態(tài)地獲取類的信息并操作其成員,本文詳細介紹了getDeclaredFields()的使用方法、工作原理以及最佳實踐,涵蓋了反射的基本概念、使用場景和注意事項,感興趣的朋友一起看看吧
    2025-01-01
  • java Unicode和UTF-8之間轉換實例

    java Unicode和UTF-8之間轉換實例

    這篇文章主要介紹了java Unicode和UTF-8之間轉換實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Java方法參數(shù)是引用調用還是值調用?

    Java方法參數(shù)是引用調用還是值調用?

    Java方法參數(shù)是引用調用還是值調用?這是一個值得思考的問題。閱讀本文,找出答案
    2016-02-02
  • Java數(shù)據(jù)開發(fā)輔助工具Docker與普通程序使用方法

    Java數(shù)據(jù)開發(fā)輔助工具Docker與普通程序使用方法

    這是為數(shù)據(jù)開發(fā)人員使用的輔助工具,用于數(shù)據(jù)庫之間的表同步,說同步并不嚴謹,因為不是實時更新的,更確切的說法是復制,可以方便的從一個數(shù)據(jù)庫復制表到另一個數(shù)據(jù)庫,以下遇到同步的詞請理解為復制
    2021-09-09
  • Java面向對象基礎知識之抽象類和接口

    Java面向對象基礎知識之抽象類和接口

    這篇文章主要介紹了Java面向對象的抽象類和接口,文中有非常詳細的代碼示例,對正在學習java基礎的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-11-11

最新評論

晋州市| 绥阳县| 罗平县| 县级市| 盐城市| 资源县| 库尔勒市| 镇原县| 盐池县| 东丽区| 塘沽区| 临猗县| 武强县| 天峻县| 河津市| 丰宁| 曲松县| 合阳县| 宜昌市| 上高县| 额敏县| 沅陵县| 江都市| 盘锦市| 桦南县| 务川| 开封市| 广平县| 佛冈县| 收藏| 东平县| 金堂县| 定州市| 广饶县| 淅川县| 墨江| 泉州市| 遂平县| 泽州县| 文水县| 泰安市|