全面解析Java註解(學習筆記),全面解析java
第一章 概述概念
Java提供了一種原程式中的元素關聯任何資訊和任何中繼資料的途徑和方法。
第二章 Java中的常見註解2-1 JDK中的註解
- @Override
- @Deprecated
- @Suppvisewarnings(“deprecation”)
2-2 Java第三方註解Spring
- @Autowired
- @Service
- @Repository
Mybatis
- @InsertProvider
- @UpdateProvider
- @Options
第三章 註解的分類3-1 Java註解的分類按照運行機制(生命週期)分類
- 源碼註解:註解只在源碼中存在,編譯成.class檔案就不存在了。
- 編譯時間註解:註解在源碼和.class檔案中都存在。(JDK內建的註解)
- 運行時註解:在運行階段還起作用,甚至會影響運行邏輯的註解。(@Autowired)
按照來源分
- 來自JDK的註解
- 來自第三方的註解
- 我們自己定義的註解
- 元註解(註解的註解)
第四章 自訂註解4-1 Java自訂註解文法要求
@Target({ElementType.METHOD,ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Inherited@Documentedpublic @interface Description{ String desc(); String author(); int age() default 18;}
- 使用@interface關鍵字定義註解
- 成員以無參無異常方式聲明
- 可以用default為成員指定一個預設值
- 成員類型是受限的,合法的類型包括原始類型及String,Class,Annotation,Enumeration
- 如果註解只有一個成員,則成員名必須取名為value(),在使用時可以忽略成員名和賦值號(=)
- 註解類可以沒有成員,沒有成員的註解稱為標識註解
元註解@Target({ElementType.METHOD,ElementType.TYPE})
- CONSTRUCTOR:構造方法聲明
- FIELD:欄位聲明
- LOCAL_VARIABLE:局部變數聲明
- METHOD:方法聲明
- PACKAGE:包聲明
- PARAMETER:參數聲明
- TYPE:類,介面
@Retention(RetentionPolicy.RUNTIME)
@Inherited
允許子類繼承。介面繼承無效,類繼承有效。並且只會整合類上的註解不會繼承該類方法上的註解。
@Documented
產生javadoc會包含註解
4-2 使用自訂註解使用註解的文法
@<註解名>(<成員名1>=<成員值1>,<成員名2>=<成員值2>,...)
@Description(desc="I am eyeColor", author="Mooc boy", age=18)public String eyeColor(){ return "red";}
4-3 關於自訂註解的代碼示範說明
同4-2。
4-4 解析註解
public static void main(String[] args) { //1.使用類載入器載入類 try { Class c = Class.forName("com.imooc.annotation.Child"); //2.找到類上面的註解 boolean isExist = c.isAnnotationPresent(Description.class); if(isExist){ //3.拿到註解執行個體 Description d = (Description)c.getAnnotation(Description.class); System.out.println(d.value()); } //4.找到方法上的註解 Method[] ms = c.getMethods(); for (Method m : ms) { boolean isMExist = m.isAnnotationPresent(Description.class); if(isMExist){ Description d = (Description)m.getAnnotation(Description.class); System.out.println(d.value()); } } //另一種解析方法 for (Method m : ms){ Annotation[] as = m.getAnnotations(); for (Annotation a : as){ if (a instanceof Description) { Description d = (Description)a; System.out.println(d.value()); } } } } catch (ClassNotFoundException e) { e.printStackTrace(); }}
第五章 項目實戰5-1 項目需求項目說明
項目取自一個公司的持久層架構,用來代替Hibernate的解決方案,核心代碼就是通過註解來實現的。
需求5-2 項目實現(上)
代碼請參考慕課網。
5-3 項目實現(下)
代碼請參考慕課網。
第六章 課程總結
課程連結:http://www.imooc.com/learn/456
轉摘自慕課網。
-
頂
-
0
-
踩
-
0
查看評論