欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Java注解知識點

 更新時間:2021年05月07日 14:56:53   作者:香菜聊游戲  
這篇文章主要介紹了詳解Java注解知識點,文中有非常詳細的代碼示例,對正在學習java的小伙伴們有非常好的幫助,需要的朋友可以參考下

一、注解是什么

Java 注解用于為 Java 代碼提供元數(shù)據(jù),看完這句話也許你還是一臉懵逼,用人話說就是注解不直接影響你的代碼執(zhí)行,僅提供信息。接下我將從注解的定義、元注解、注解屬性、自定義注解、注解解析JDK 提供的注解這幾個方面再次了解注解(Annotation)

二、jdk支持的注解有哪些

2.1 三種常用的注解:

@SuppressWarnings     該注解的作用是阻止編譯器發(fā)出某些警告信息。它可以有以下參數(shù):  

deprecation :過時的類或方法警告?!   ?
unchecked:執(zhí)行了未檢查的轉換時警告?!   ?
allthrough:當Switch程序塊直接通往下一種情況而沒有Break時的警告。    
path:在類路徑、源文件路徑等中有不存在的路徑時的警告?!   ?nbsp;   
serial:當在可序列化的類上缺少serialVersionUID定義時的警告?!?nbsp;   
finally:任何finally子句不能完成時的警告?!  ?nbsp;   
all:關于以上所有情況的警告

@Deprecated       該注解的作用是標記某個過時的類或方法。

@Override     該注解用在方法前面,用來標識該方法是重寫父類的某個方法。

2.2 元注解

元注解主要是用來注解自定義注解的注解,分別有@Retention、 @Target、 @Document、 @Inherited和@Repeatable(JDK1.8加入)五種。

下面講兩個平常最常用的注解:

@Retention 注解的生命周期,主要有

RetentionPolicy.SOURCE 僅存在于源碼中
 
RetentionPolicy.CLASS 默認的策略,在class字節(jié)碼文件中存在,但運行時無法獲得
 
RetentionPolicy.RUNTIME 在運行時可以通過反射獲取到,也是最常用的。

@Target 注解的作用目標,主要有

 ElementType.TYPE  作用接口、類、枚舉、注解
 
 ElementType.FIELD 作用屬性字段、枚舉的常量
 
 ElementType.METHOD 作用方法
 
 ElementType.PARAMETER 作用方法參數(shù)
 
 ElementType.CONSTRUCTOR 作用構造函數(shù)
 
 ElementType.LOCAL_VARIABLE 作用局部變量
 
 ElementType.ANNOTATION_TYPE 作用于注解(@Retention注解中就使用該屬性)
 
 ElementType.PACKAGE 作用于包
 
 ElementType.TYPE_PARAMETER 作用于類型泛型,即泛型方法、泛型類、泛型接口 (jdk1.8加入)

三、注解實例

在枚舉中編譯器只會限制枚舉的名字不能重復,在開發(fā)中經(jīng)常會遇到枚舉Id 重復的問題,因為每個人在開發(fā)功能的時候一般只會專注于自己的功能,做完只會直接提交代碼,不會注意到枚舉Id沖突,這個時候可以使用下面的代碼進行枚舉自檢,在項目的開發(fā)階段就能及時發(fā)現(xiàn)代碼的問題。下面的代碼稍微修改下就可以在項目中使用,拿走不寫。

1、自定義注解

檢測枚舉的key 是否有重復

package org.pdool.anno;
 
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @author 香菜
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface CheckEnum {
}

2、在對應的方法上增加注解

package org.pdool.anno;
/**
* 資源枚舉類
* @author 香菜
*/
public enum ResType {
   GOLD(1),
   DIAMOND(2),
   //注意:此處重復
   SILVER(2);
   int type;
 
   @CheckEnum
   public int getType() {
       return type;
  }
 
   ResType(int type) {
       this.type = type;
  }
}

3、在項目啟動的時候檢查注解的枚舉

package org.pdool.anno;
 
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashSet;
import java.util.Set;
 
/**
* @author 香菜
*/
public class Aain {
   public static void main(String[] args) throws InvocationTargetException,IllegalAccessException {
       // 獲取有注解的方法
       Method[] declaredMethods = ResType.class.getDeclaredMethods();
       Method annoMethod = null;
       for (Method declaredMethod : declaredMethods) {
           CheckEnum  annotation = declaredMethod.getAnnotation(CheckEnum.class);
           if (annotation != null){
               annoMethod = declaredMethod;
              break;
          }
      }
       Set<Object> set = new HashSet<>();
       // 遍歷每個枚舉的id
       Object[] oo = ResType.class.getEnumConstants();
       for (Object o : oo) {
           Object invoke = annoMethod.invoke(o);
           if (!set.contains(invoke)){
               set.add(invoke);
          }else {
               System.out.println("重復的key "+ o +" -- "+ invoke);
          }
      }
  }
}

圖片

注:上面的代碼只是簡單的實例,只是為了展示核心代碼,在項目中使用時可以修改類的獲取為掃描項目下的包,遍歷所有的枚舉,就可以在項目中使用了。

四、總結

注解雖然不影響代碼的運行,但是可以為運行中的程序提供更多的信息,注解也是很多框架的基本技術切入點,比如Spring 的注解,Lombok 的各種注解,都是使用了注解做了很多事,明白了注解是怎么回事,理解框架也會輕而易舉。

到此這篇關于詳解Java注解知識點的文章就介紹到這了,更多相關Java注解內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java設計模式之單例模式實例分析

    Java設計模式之單例模式實例分析

    這篇文章主要介紹了Java設計模式之單例模式,以實例形式較為詳細的分析了單例模式的概念、定義及簡單實現(xiàn)技巧,需要的朋友可以參考下
    2015-11-11
  • SystemServer進程啟動過程解析

    SystemServer進程啟動過程解析

    這篇文章主要為大家介紹了SystemServer進程啟動過程解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • Java中的cglib代理詳解

    Java中的cglib代理詳解

    這篇文章主要介紹了Java中的cglib代理詳解, 代理模式是一種設計模式,它可以為其他對象提供一種代理,以控制對該對象的訪問,可以在運行時動態(tài)地創(chuàng)建代理對象,而不需要手動編寫代理類的代碼,需要的朋友可以參考下
    2023-09-09
  • java 中enum的使用方法詳解

    java 中enum的使用方法詳解

    這篇文章主要介紹了java 中enum的使用方法詳解的相關資料,希望通過本文能幫助到大家,理解掌握java 中enum的使用方法,需要的朋友可以參考下
    2017-09-09
  • spring boot實戰(zhàn)之內嵌容器tomcat配置

    spring boot實戰(zhàn)之內嵌容器tomcat配置

    本篇文章主要介紹了Spring Boot 使用內嵌的tomcat容器配置,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • 教你如何把Eclipse創(chuàng)建的Web項目(非Maven)導入Idea

    教你如何把Eclipse創(chuàng)建的Web項目(非Maven)導入Idea

    這篇文章主要介紹了教你如何把Eclipse創(chuàng)建的Web項目(非Maven)導入Idea,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • RestTemplate使用之如何設置請求頭、請求體

    RestTemplate使用之如何設置請求頭、請求體

    這篇文章主要介紹了RestTemplate使用之如何設置請求頭、請求體問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java連接Hbase的項目實踐

    Java連接Hbase的項目實踐

    HBase是基于Hadoop的高可靠、高性能、面向列的NoSQL數(shù)據(jù)庫,它提供了對海量數(shù)據(jù)的存儲和實時讀寫的能力,本文主要介紹了Java連接Hbase的項目實踐,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • Java編程swing組件JLabel詳解以及使用示例

    Java編程swing組件JLabel詳解以及使用示例

    這篇文章主要介紹了Java編程swing組件JLabel詳解以及使用示例,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • java實現(xiàn)客戶管理系統(tǒng)

    java實現(xiàn)客戶管理系統(tǒng)

    這篇文章主要為大家詳細介紹了java實現(xiàn)客戶管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05

最新評論