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

Java中三種簡單注解介紹和代碼實例

 更新時間:2014年09月19日 09:39:29   作者:renfufei  
這篇文章主要介紹了Java中三種簡單注解介紹和代碼實例,本文講解了Override注解、Deprecated注解、Suppresswarnings注解、元注解等內(nèi)容,需要的朋友可以參考下

簡單Java注解

JDK5提供的簡單注解類型只有3個. 這三個都是用來預(yù)防錯誤或者進行提醒的,分別是:

1.Override
2.Deprecated
3.Suppresswarnings

需要注意,JDK5(另一個說法,Tiger)實際上并沒有許多內(nèi)置注解;相反,它允許核心Java支持注解特性的能力. JSR-175中嚴(yán)格規(guī)定它用來定義元數(shù)據(jù)功能. 需要由程序員編寫自定義的注解類型,其他JSR標(biāo)準(zhǔn)也編寫了一系列標(biāo)準(zhǔn)注解類型. 下面將用實例來深入講解這三個簡單注解.

Override 注解

Override 注解指明被注解的方法需要覆寫超類中的方法.

如果某個方法使用了該注解,卻沒有覆寫超類中的方法(比如大小寫寫錯了,或者參數(shù)錯了,或者是子類自己定義的方法),編譯器就會生成一個錯誤.

(注意: JRE5中實現(xiàn)接口中的方法時不能使用Override注解,JRE6允許了,很多時候JRE5會報這個錯).

示例1演示了覆寫注解:

Java注解示例1:

復(fù)制代碼 代碼如下:

public class Test_Override {
 @Override
 public String toString() {
    return super.toString() + "測試使用 'Override' 注解";
 }
}

如果出現(xiàn)方法名字拼寫錯誤會發(fā)生什么? 例如,如果你將toString方法改名為"tostring"(全小寫),編譯時就會得到類似下面這樣的出錯信息:

復(fù)制代碼 代碼如下:

Compiling 1 source file to D:tempNew Folder (2)
                              TestJavaApplication1buildclasses
D:tempNew Folder (2)TestJavaApplication1srctest
   myannotationTest_Override.java:24: method does not override
                a method from its superclass
@Override
1 error
BUILD FAILED (total time: 0 seconds)

當(dāng)然,Eclipse就會直接報紅叉.現(xiàn)在IDE發(fā)展的很好用,初學(xué)者不應(yīng)該去折騰JDK的命令行了.

Deprecated 注解

這個注解表明如果程序調(diào)用一個廢棄的(Deprecated,廢棄的,過時的)元素時,編譯器應(yīng)該顯示警告信息. 示例2顯示了如何使用Deprecated 注解.

Java注解示例2

首先,創(chuàng)建一個類,并像下面這樣將某個方法標(biāo)明為 廢棄:

復(fù)制代碼 代碼如下:

public class Test_Deprecated {
   @Deprecated
   public void doSomething() {
      System.out.println("測試使用 棄用 注解: 'Deprecated'");
   }
}

接著,嘗試從另一個類調(diào)用這個方法:

復(fù)制代碼 代碼如下:

public class TestAnnotations {
   public static void main(String arg[]) throws Exception {
      new TestAnnotations();
   }
   public TestAnnotations() {
   Test_Deprecated t2=new Test_Deprecated();
   t2.doSomething();
}

本例中的doSomething()方法被聲明為廢棄的方法. 因此,一般情況下不應(yīng)該調(diào)用這個方法. 在編譯Test_Deprecated.java 文件時是不會有警告消息的. 但在編譯 TestAnnotations.java 時編譯器就會給出類似這樣的警告信息(Eclipse 會有警告):

復(fù)制代碼 代碼如下:

Compiling 1 source file to D:tempNew Folder
(2)TestJavaApplication1buildclasses
D:tempNew Folder
(2)TestJavaApplication1srctestmyannotation
    TestAnnotations.java:27:
warning: [deprecation] doSomething() in
test.myannotation.Test_Deprecated has been deprecated
t2.doSomething();
1 warning

Suppresswarnings 注解

這個注解告訴編譯器應(yīng)該屏蔽帶注解的元素和所有子元素的警告信息. 會壓制一個元素集和子元素的所有警告信息. 比如,假設(shè)你在一個class上使用了Suppresswarnings 注解壓住一個警告,在它的一個方法上用Suppresswarnings 注解來壓制另一個警告,則兩種警告都會在方法級別被壓制住. 請參見示例3.

Java注解示例3:

復(fù)制代碼 代碼如下:

public class TestAnnotations {
   public static void main(String arg[]) throws Exception {
      new TestAnnotations().doSomeTestNow();
   }
   @SuppressWarnings({"deprecation"})
   public void doSomeTestNow() {
      Test_Deprecated t2 = new Test_Deprecated();
      t2.doSomething();
   }
}

在本例中,使用 @SuppressWarnings壓住了示例2中所示的deprecation警告信息. 因為該方法的這類警告被壓住了,所以你不會再看到"deprecation"警告.

注意: 在最內(nèi)層的元素上使用該注解是比較好的. 因此,如果你只想在一個特定的方法上壓制一個警告,你應(yīng)該在方法上標(biāo)注,而不是在類上使用注解.

元注解(Meta-Annotations,Java注解類型)

元注解,實際上被稱為注解的注解,包含四種類型. 分別是:

1.Target
2.Retention
3.Documented
4.Inherited

Target 注解

Target注解表明注解類型適用于哪種目標(biāo)元素. 它包含下面的枚舉類型值:

1.@Target(ElementType.TYPE)  —— 可以適用于任何類的元素
2.@Target(ElementType.FIELD)  —— 只適用于字段或?qū)傩?br /> 3.@Target(ElementType.METHOD)  —— 只適用于方法的注解
4.@Target(ElementType.PARAMETER)  —— 只適用于方法的參數(shù)
5.@Target(ElementType.CONSTRUCTOR) —— 只適用于構(gòu)造函數(shù)
6.@Target(ElementType.LOCAL_VARIABLE) —— 只適用于局部變量
7.@Target(ElementType.ANNOTATION_TYPE) —— 指明聲明類型本身是一個注解類型

示例4演示了Target 注解:

Java注解示例4

首先,定義了一個名為Test_Target的注解類型,帶上 @Target元注解,如下所示:

復(fù)制代碼 代碼如下:

@Target(ElementType.METHOD)
public @interface Test_Target {
   public String doTestTarget();
}

接下來,創(chuàng)建一個類,它將使用Test_Target注解:

復(fù)制代碼 代碼如下:

public class TestAnnotations {
   public static void main(String arg[]) {
      new TestAnnotations().doTestTarget();
   }
   // 在方法上使用注解,OK.
   // 中間也可以不換行,換2行之類,Java忽略多余的換行
   @Test_Target(doTestTarget="Hello World !")
   public void doTestTarget() {
      System.out.printf("Testing Target annotation");
   }
}

@Target(ElementType.METHOD) 注解表明該注解類型只能被用來注解方法. 如果你編譯這段代碼,不會顯示警告消息. 但是,如果將這個注解聲明到一個字符串變量上,會發(fā)生什么呢? 就像下面這樣:

復(fù)制代碼 代碼如下:

public class TestAnnotations {
   // 這是錯誤的做法,編譯不會通過,因為注解的Level不對.
   // 元注解指明了只能注解方法,就不能用來注解屬性
   @Test_Target(doTestTarget="Hello World !")
   private String str;
   public static void main(String arg[]) {
      new TestAnnotations().doTestTarget();
   }
   public void doTestTarget() {
      System.out.printf("Testing Target annotation");
   }
}

唯一的變化就是注解聲明從方法級轉(zhuǎn)向字段級,這是不正確的. 因為你已經(jīng)定義了注解   @Test_Target 只適用在方法級,如果你嘗試編譯這個類,你可能會得到這樣的錯誤信息:

復(fù)制代碼 代碼如下:

"TestAnnotations.java":
D:R_AND_DTestAnnotationsrctestmyannotation
   TestAnnotations.java:16:
annotation type not applicable to this kind of declaration at line
16, column 0
@Test_Target(doTestTarget="Hello World !")
^
Error in javac compilation

相關(guān)文章

  • 關(guān)于feign調(diào)用的參數(shù)傳遞問題(@RequestBody和@RequestParam)

    關(guān)于feign調(diào)用的參數(shù)傳遞問題(@RequestBody和@RequestParam)

    這篇文章主要介紹了關(guān)于feign調(diào)用的參數(shù)傳遞問題(@RequestBody和@RequestParam),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • SpringBoot如何使用RequestBodyAdvice進行統(tǒng)一參數(shù)處理

    SpringBoot如何使用RequestBodyAdvice進行統(tǒng)一參數(shù)處理

    這篇文章主要介紹了SpringBoot使用RequestBodyAdvice進行統(tǒng)一參數(shù)處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • JAVA多線程并發(fā)下的單例模式應(yīng)用

    JAVA多線程并發(fā)下的單例模式應(yīng)用

    單例模式應(yīng)該是設(shè)計模式中比較簡單的一個,也是非常常見的,但是在多線程并發(fā)的環(huán)境下使用卻是不那么簡單了,今天給大家分享一個我在開發(fā)過程中遇到的單例模式的應(yīng)用。
    2017-03-03
  • Java圖片中顯示當(dāng)前時間的方法

    Java圖片中顯示當(dāng)前時間的方法

    這篇文章主要介紹了Java圖片中顯示當(dāng)前時間的方法,需要的朋友可以參考下
    2017-09-09
  • 如何使用java制作假數(shù)據(jù)接口

    如何使用java制作假數(shù)據(jù)接口

    這篇文章主要介紹了如何使用java制作假數(shù)據(jù)接口,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Mybatis中強大的resultMap功能介紹

    Mybatis中強大的resultMap功能介紹

    這篇文章主要給大家介紹了關(guān)于Mybatis中強大的resultMap功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Mybatis具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • windows上nacos自啟動的三種方法小結(jié)

    windows上nacos自啟動的三種方法小結(jié)

    本文主要給大家介紹了windows上nacos自啟動的三種方法,借助WinSW.exe添加到服務(wù)列表,修改nacos啟動配置以及以開機"啟動"方式——啟動Nacos的startup.cmd這三種方法,文中通過圖文講解的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • JDK源碼白話解讀之ThreadLocal篇

    JDK源碼白話解讀之ThreadLocal篇

    其實網(wǎng)上有很多關(guān)于ThreadLocal的文章了,有不少文章也已經(jīng)寫的非常好了。但是很多同學(xué)反應(yīng)還有一些部分沒有講解的十分清楚,還是有一定的疑惑沒有想的十分清楚
    2022-02-02
  • JDK8中String的intern()方法實例詳細(xì)解讀

    JDK8中String的intern()方法實例詳細(xì)解讀

    String字符串在我們?nèi)粘i_發(fā)中最常用的,當(dāng)然還有他的兩個兄弟StringBuilder和StringBuilder,接下來通過本文給大家介紹JDK8中String的intern()方法詳細(xì)解讀,需要的朋友可以參考下
    2022-09-09
  • java集合類arraylist循環(huán)中刪除特定元素的方法

    java集合類arraylist循環(huán)中刪除特定元素的方法

    下面小編就為大家?guī)硪黄狫ava集合類ArrayList循環(huán)中刪除特定元素的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11

最新評論