1. 程式人生 > >java註解簡單講解以及自定義註解例子

java註解簡單講解以及自定義註解例子

註解(Annotation) jdk5定義了4個標準的元註解。除了元註解,還有其它幫我們定義好的註解如@SuppressWarnings  當然我們也可以自定義註解 @Target, @Retention, @Documented, @Inherited @Retention @Retention定義了該Annotation被保留的時間長短. 如:@Retention(RetentionPolicy.SOURCE )該註解有三個值供選擇: RetentionPolicy.SOURCE        這種型別的Annotations只在原始碼級別保留,編譯時就會被忽略 RetentionPolicy.CLASS
       這種型別的Annotations編譯時被保留,在class檔案中存在,但JVM將會忽略。預設就是這個值 RetentionPolicy.RUNTIME       這種型別的Annotations將被JVM保留,所以他們能在執行時被JVM或其他使用反射機制的程式碼所讀取和使用. 如:@Override就是RetentionPolicy.SOURCE。       @SuppressWarnings也是RetentionPolicy.SOURCE 都是給編譯看就沒用了        @Deprecated是RetentionPolicy.RUNTIME 這些都可以通過jdk的文件看到 @Target
用於描述註解的使用範圍(即:被描述的註解可以用在什麼地方) 有7個取值,當然可以設定多個取值,以陣列的形式如@Target={ElementType.xxx,ElementType.xxx}。 CONSTRUCTOR:用於描述構造器 FIELD:用於描述域 LOCAL_VARIABLE:用於描述區域性變數 METHOD:用於描述方法 PACKAGE:用於描述包 PARAMETER:用於描述引數 TYPE:用於描述類、介面(包括註解型別) 或enum宣告 @Documented Documented 註解表明這個註解應該被 javadoc工具記錄. 預設情況下,javadoc是不包括註解的. 但如果宣告註解時指定了 @Documented,則它會被 javadoc 之類的工具處理, 所以註解型別資訊也會被包括在生成的文件中 @Inherited
允許子類繼承父類的註解, 這個註解我也沒具體試過 不是很清楚用法 下面舉例說說怎麼自定義註解 (相關問題都有註釋 這裡就不多寫了) 自定義的註解類:
package com.Howard.test04;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
 * 自定義註解類
 * 但是必須要加上元註解
 * @Retention(RetentionPolicy.RUNTIME)元註解
 * @Target設定該註解的使用的目標 可以是方法或類等,也可以多個
 * @author Howard
 * 2017年2月19日
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(value={ElementType.METHOD,ElementType.TYPE})
public @interface myAnnotation {

     //屬性 @myAnnotation(xxx="yyy")
     //如果各個屬性都沒預設值 那麼使用該註解必須註明所有屬性的值
     //如果有預設值的 可以不註明 註明則覆蓋預設值
     //如果屬性是value的,並且只有這個屬性或者其它屬性有預設值不另賦值,那麼vlue這個屬性在註明的
     //時候可以簡單寫為@myAnnotation("red")
     String color() default "red";
     String value();

     int[] attr() default {1,2,3};
     //屬性也是一個註解 mataAnnotation也是一個自定義註解
     mataAnnotation mataAnnotation() default @mataAnnotation("aaa");
}
package com.Howard.test04;
/**
 * @author Howard
 * 2017年2月19日
 */
public @interface mataAnnotation {
     String value();
}

測試類:
package com.Howard.test04;
/**
 * 測試java註解
 * @author Howard
 * 2017年2月19日
 */
@myAnnotation(value="abc",attr={3,4,5},[email protected]("bbb"))
public class AnnotationTest {

     @SuppressWarnings("deprecation")
     public static void main(String[] args) {

           //該方法已經過時 在方法上加註解@SuppressWarnings("deprecation")可以取消黃色提醒
           System.runFinalizersOnExit(false);
           //過時
           method1();
           //檢測是該類否有註解
          if(AnnotationTest.class.isAnnotationPresent(myAnnotation.class)){
                myAnnotation annotation = AnnotationTest.class.getAnnotation(myAnnotation.class);
                //該註解類必須有元註解才可以
                //@com.Howard.test04.myAnnotation()
                System.out.println(annotation);
                //獲取註解的屬性值
                System.out.println(annotation.color());
                System.out.println(annotation.value());
                System.out.println(annotation.attr().length);
                System.out.println(annotation.mataAnnotation().value());
           }
     }
     @Deprecated
     public static void method1(){
           //java為了可以向下相容使用以前版本的jdk使用者,並不會刪除過時的方法,僅提醒而已
           System.out.println("已經過時的方法,加註解就變成過時的方法");
     }

}

執行結果:

相關推薦

java註解簡單講解以及定義註解例子

註解(Annotation) jdk5定義了4個標準的元註解。除了元註解,還有其它幫我們定義好的註解如@SuppressWarnings  當然我們也可以自定義註解 @Target, @Retention, @Documented, @Inherited @Retent

java註解詳解和定義註解

本文首先介紹了註解的基本概念和JDK內建的標準註解,然後介紹瞭如何自定義註解,最後給出了自定義註解的例子。 一、註解的基本概念 Java 註解就像修飾符一樣,可以用於從java程式碼中抽取文件、跟蹤程式碼中的依賴性或者在編譯時做檢查。註解可以被應用在包、類、

Spring 關於bean的獲取以及定義註解的起始注入和獲取

    最近有收穫了一點東西,特來記錄。假設一個場景,一個學生的學習計劃根據其不同的人,和學習內容有不同的結果,和處理方式。按照我們正常的寫法,應該是就是構造一個’內容‘介面。例如 public interface PersonAnnotationService {

深入理解Java註解(Annotation)定義註解

要深入學習註解,我們就必須能定義自己的註解,並使用註解,在定義自己的註解之前,我們就必須要了解Java為我們提供的元註解和相關定義註解的語法。 元註解:   元註解的作用就是負責註解其他註解。Java5.0定義了4個標準的meta-annotation型別,它們被用來

ButterKnife的使用以及定義註解例項化控制元件

現在網上有很多自定義註解,主要就是為了先原先的例項化控制元件太麻煩了,於是有了各種的注意,但是我這裡介紹一個外掛一鍵生成,不需要手寫。配置方法如下開啟Android Studio的File->Pr

Java註解詳解,定義註解,利用反射解析註解

概要 這篇文章將會帶領你瞭解Java註解,註解的使用,註解的解析,利用反射解析執行時註解,相信有一定Java基礎的小夥伴一定會接觸大量的註解,Spring , Hibernate , MyBatis等著名的框架也有很多關於註解方面的應用,對於註解的使用小夥伴們

註解(Annotation)定義註解(四)--編譯期註解解析講解和手寫ButterKnife

註解(Annotation)自定義註解(四)–編譯期註解解析講解和手寫ButterKnife 前言 前面兩篇講解了執行期註解的使用和xutils原始碼的解析,以及手動打造自己的IOC框架。但是執行期註解由於效能問題被一些人所詬病,所以這裡我們講下編譯器註

深入理解Java註解(Annotation)定義註解入門

要深入學習註解,我們就必須能定義自己的註解,並使用註解,在定義自己的註解之前,我們就必須要了解Java為我們提供的元註解和相關定義註解的語法。 元註解:   元註解的作用就是負責註解其他註解。Java5.0定義了4個標準的meta-annotation型別,它們被用來

Spring Boot定義註解掃描器 Spring Boot定義註解掃描器

原 Spring Boot自定義註解掃描器 2018年08月15日 14:37:52 Dongguabai 閱讀數:502

spring元註解說明和註解簡單解析以及部分常見註解說明

背景:熟悉註解的作用,以及有可能需要自定義註解。 元註解: @Target 表示該註解可以用於什麼地方,可能的ElementType引數有: CONSTRUCTOR:構造器的宣告 FIELD:域宣告(包括enum例項) LOCAL_VARIABLE:區域性變數宣告 METHOD:方法

Spring註解的原理與定義註解的實現

本文只是用於記錄個人在學習annotation過程中的心德,所以知識面不太完善。 1、註解的基本概念     Java 的annotation提供的是一種類似於註釋的機制,註解本身不做任何事,好比一個配置或者說一個標記。用於包、型別、構造方法、方法、成員變數、引數及本地變數

註解提高篇:定義註解處理器(APT)

## 0x01 繼承AbstractProcessor抽象類 當定義好Annotation註解後,接下來就需要一個註解處理器來處理我們的自定義註解了。實現Java Annotation一般需要繼承AbstractProcessor抽象類,並且重寫其四個方法來實現提取,解析並處理自定義註解的邏輯如下: cla

java 加密演算法 base64 以及 定義 加解密

import sun.misc.BASE64Decoder; public class Base64Utils {    public static String getBASE64(byte[] b) {   String s = null;   if (b !=

使用Spring註解AOP(基於定義註解和包下攔截方法)

一、基於自定義註解@Pointcut方式 1.自定義一個註解 package spring4.java.service.aop; import java.lang.annotation.Documented; import java.lang.annota

Spring AOP 基於註解實現日誌記錄+定義註解

一、寫一個自定義註解        註解中包括配置方法所在模組名稱,以及功能名稱,當然我們在註解裡可以自定義。import java.lang.annotation.Documented; import java.lang.annotation.ElementType; im

IOS導航欄的簡單用法以及定義實現例程

雖然網上資源很多,但是還是很讓人難受,尤其是新手。 找了好久,好多例程都看了,有的不能跳轉,有的不能新增按鈕,當然這是自己能力有限所致,看得越多,越糊塗了。 最終找到了比較合適的解決方案,記下也分享一下! 最終實現效果: 1、主介面 2、跳轉後頁面 上程式碼: 1、代理

註解的使用和定義註解

JDK中的三個基本註解 a、@Override:檢查子類確實是覆蓋了父類的方法。 b、@Deprecated:說明已經過時了。 c、@SuppressWarnings({ "unused", "deprecation" }):抑制程式中的警告。unused警告

java定義註解以及原理

import java.util.Arrays; import java.util.List; import com.puhui.flowplatform.manage.filter.RightFilter; import org.springframework.aop.BeforeAdvice; impo

Java定義註解以及模擬單元測試

一、自定義註解1.編寫自定義註解類 @MyTestpackage com.itheima.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; i

Java定義註解反射校驗數據

sda new out 格式 是否 本地 imp 使用範圍 數據類型 package com.annotations.ecargo; import java.lang.annotation.ElementType; import java.lang.annotati