国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

java基礎篇---注解(Annotation)

2019-11-14 22:56:35
字體:
來源:轉載
供稿:網友
java基礎篇---注解(Annotation)

一、概念

   Annontation是Java5開始引入的新特征。中文名稱一般叫注解。它提供了一種安全的類似注釋的機制,用來將任何的信息或元數據(metadata)與程序元素(類、方法、成員變量等)進行關聯。更通俗的意思是為程序的元素(類、方法、成員變量)加上更直觀更明了的說明,這些說明信息是與程序的業務邏輯無關,并且是供指定的工具或框架使用的。

Annontation像一種修飾符一樣,應用于包、類型、構造方法、方法、成員變量、參數及本地變量的聲明語句中。

java.lang.annotation.Annotation接口是所有的Annotation都必須實現的接口。

系統內建的Annotation

@Override

java.lang.Override是一個marker annotation類型,它被用作標注方法。它說明了被標注的方法重載了父類的方法,起到了斷言的作用。如果我們使用了這種annotation在一個沒有覆蓋父類方法的方法時,java編譯器將以一個編譯錯誤來警示。

class Person{    public String getInfo(){        // 取得信息        return "這是一個Person類。" ;    }};class Student extends Person{    // 繼承此類    @Override    public String getinfo(){    // 覆寫方法        return "這是一個Student類。" ;    }};public class OverrideAnnotationDemo{    public static void main(String args[]){        Person per = new Student() ;        System.out.PRintln(per.getInfo()) ;    // 輸出信息    }};

使用@Override注釋可以保證程序的正確執行

@Deprecated

Deprecated也是一種marker annotation。當一個類型或者類型成員使用@Deprecated修飾的話,編譯器將不鼓勵使用這個被標注的程序元素。所以使用這種修飾具有一定的 “延續性”:如果我們在代碼中通過繼承或者覆蓋的方式使用了這個過時的類型或者成員,雖然繼承或者覆蓋后的類型或者成員并不是被聲明為@Deprecated,但編譯器仍然要報警。

@Deprecated            // 聲明不建議使用的操作class Demo{    public String getInfo(){        return "這是一個Person類。" ;    }};public class DeprecatedAnnotationDemo02{    public static void main(String args[]){        Demo d = new Demo() ;        System.out.println(d.getInfo()) ;    }};

@SuppressWarnings

此注解能告訴Java編譯器關閉對類、方法及成員變量的警告。有時編譯時會提出一些警告,對于這些警告有的隱藏著Bug,有的是無法避免的,對于某些不想看到的警告信息,可以通過這個注解來屏蔽。

SuppressWarning不是一個marker annotation。它有一個類型為String[]的成員,這個成員的值為被禁止的警告名。對于javac編譯器來講,被-Xlint選項有效的警告名也同樣對@SuppressWarings有效,同時編譯器忽略掉無法識別的警告名。

@Deprecatedclass Demo<T>{    private T var ;    public T getVar(){        return this.var ;    }    public void setVar(T var){        this.var = var ;    }};public class SuppressWarningsAnnotationDemo03{    @SuppressWarnings(value={"unchecked","deprecation"})    public static void main(String args[]){        Demo d = new Demo() ;        d.setVar("偶my耶") ;        System.out.println("內容:" + d.getVar()) ;    }};

反射與annontation

如果想要一個Annotation起作用必須要有反射機制

示例如下

package org.lxh.demo16.reflectannotation ;public class SimpleBeanOne{    @SuppressWarnings("unchecked")     @Deprecated    @Override    public String toString(){        return "Hello oumyye!!!" ;    }};

同時設置三個Annotation,那么此時注意,只有Deprecated的Annotation的定義范圍是RUNTIME范圍,所以此時通過反射的話只能取得一個。

import java.lang.annotation.Annotation ;import java.lang.reflect.Method ;public class ReflectDemo01{    public static void main(String args[]) throws Exception{    // 所有異常拋出        Class <?> c = null ;        c = Class.forName("org.lxh.demo16.reflectannotation.SimpleBeanOne") ;        Method toM = c.getMethod("toString") ;    // 找到toString()方法        Annotation an[] = toM.getAnnotations() ;    // 取得全部的Annotation        for(Annotation a:an){    // 使用 foreach輸出            System.out.println(a) ;        }    }};

此時,已經取得一個Annotation。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 扶余县| 满洲里市| 九龙坡区| 南宫市| 法库县| 长武县| 安吉县| 喜德县| 台北市| 金湖县| 桑日县| 青铜峡市| 静安区| 富蕴县| 名山县| 融水| 姚安县| 大足县| 朝阳市| 南溪县| 阳西县| 西平县| 亳州市| 武穴市| 安龙县| 鹤庆县| 宜都市| 文成县| 安丘市| 来安县| 喜德县| 大石桥市| 甘泉县| 仪陇县| 临泉县| 唐河县| 萝北县| 阿拉善盟| 仙游县| 东丽区| 馆陶县|