@Override : 限定某個方法,是重寫父類別方法, 此註解只能用於方法
@Deprecated : 用來表示某個程式元素( 類別, 方法等) 已過時
@SuppressWarnings : 抑制編譯器警告
class father{ public void fly(){} } class son extends father{ @Override public void fly() { super.fly(); } }
@Override表示son重寫了fly方法
如果沒有@Override還是會重寫fly方法
class father{ public void fly(){} } class son extends father{ public void fly() { super.fly(); } }
寫了@Override註解,編譯器就會去檢查方法是否重寫了父類別方法,如果重寫了,則編譯通過。若沒有重寫,則編譯錯誤。
@Override只能修飾方法,不能修飾其他類,包,屬性等等
//@Override底层代码 @Target(ElementType.METHOD)//ElementType.METHOD说明@Override只能修饰方法 @Retention(RetentionPolicy.SOURCE) public @interface Override { }
public class Deprecatedtext { public static void main(String[] args) { father father1 = new father(); father1.fly(); } } @Deprecated class father{ @Deprecated public void fly(){} }
@Deprecated表示某個程式元素(類,方法等)已過時,會透過單字中間的橫線提醒。表示不建議使用。
//@Deprecated底层代码 @Documented @Retention(RetentionPolicy.RUNTIME) @Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})//说明Deprecated能修饰方法,类,包,参数等等 public @interface Deprecated { }
2.@Deprecated的作用可以起到做新舊版的相容過渡
@SuppressWarnings("all") class father{ public void fly(){} }
@SuppressWarnings註解可以用來抑制警告訊息{""}寫入你希望抑制的警告訊息
#1.@SuppressWarnings作用範圍和你所放置的位置相關
public class Enumtext { @SuppressWarnings("all")//作用范围在main方法 public static void main(String[] args) { father father1 = new father(); father1.fly(); } } @SuppressWarnings("all")//作用范围在father类 class father{ public void fly(){} }
指定警告類型有
all,抑制所有警告
boxing,抑制與封裝/拆裝作業相關的警告
cast,抑制與強制轉型作業相關的警告
dep-ann,抑制與淘汰註釋相關的警告
deprecation,抑制與淘汰的相關警告
fallthrough,抑制與switch陳述式中遺漏break相關的警告
finally,抑制與未傳回finally區塊相關的警告
hiding,抑制與隱藏變數的區域變數相關的警告
incomplete-switch,抑制與switch陳述式(enum case)中遺漏項目相關的警告
javadoc,抑制與javadoc相關的警告
nls,抑制與非nls字符串文字相關的警告
null,抑制與空值分析相關的警告
rawtypes,抑制與使用raw類型相關的警告
resource,抑制與使用Closeable類型的資源相關的警告
restriction,抑制與使用不建議或禁止參考相關的警告
serial,抑制與可序列化的類別遺漏serialVersionUID欄位相關的警告
static- access,抑制與靜態存取不正確相關的警告
static-method,抑制與可能宣告為static的方法相關的警告
super,抑制與置換方法相關但不含super呼叫的警告
synthetic-access,抑制與內部類別的存取未優化相關的警告
sync-override,抑制因為置換同步方法而遺漏同步化的警告
unchecked,抑制與未檢查的作業相關的警告
unqualified-field-access,抑制與欄位存取不合格相關的警告
unused,抑制與未使用的程式碼及停用的程式碼相關的警告
Retention 指定註解的作用範圍,三個SOURCE,CLASS,RUNTIME
#Target 指定註解可以在哪些地方使用
Documented 指定該註解是否會在javadoc體現
Inherited 子類別會繼承父類別註解
RetentionPolicy.SOURCE :編譯器使用後,直接丟棄註解
RetentionPolicy.CLASS: 編譯器把註解記錄在class檔案中,當執行java時JVM不會保留註解
RetentionPolicy.PUNTIME:編譯器把註解記錄在class檔案中,當執行java時JVM保留註釋
@Override底層(IDEA進入底層的快速鍵為Ctrl B)
@Target(ElementType.METHOD) @Retention(RetentionPolicy.SOURCE)//表示@Override在编译器使用后,直接丢弃注释 public @interface Override { }
@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE}) // 1.CONSTRUCTOR:用于描述构造器 2.FIELD:用于描述域 3.LOCAL_VARIABLE:用于描述局部变量 4.METHOD:用于描述方法 5.PACKAGE:用于描述包 6.PARAMETER:用于描述参数 7.TYPE:用于描述类、接口(包括注解类型) 或enum声明
@Deprecated底層
@Documented @Retention(RetentionPolicy.RUNTIME) @Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})//表示@Documented在这些地方可以写注解 public @interface Deprecated { }
@Deprecated底層
@Documented//@Deprecated代码会被保存到生产的文档中 @Retention(RetentionPolicy.RUNTIME) @Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE}) public @interface Deprecated { }
被它修飾的Annotation將具有繼承性,如果某個類別使用了被@Inherited修飾的Annotation,則其子類別將自動具有該註解
以上是Java的註解Annotaton怎麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!