一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - Java中三種簡(jiǎn)單注解介紹和代碼實(shí)例

Java中三種簡(jiǎn)單注解介紹和代碼實(shí)例

2019-11-28 14:24renfufei JAVA教程

這篇文章主要介紹了Java中三種簡(jiǎn)單注解介紹和代碼實(shí)例,本文講解了Override注解、Deprecated注解、Suppresswarnings注解、元注解等內(nèi)容,需要的朋友可以參考下

簡(jiǎn)單Java注解

JDK5提供的簡(jiǎn)單注解類(lèi)型只有3個(gè). 這三個(gè)都是用來(lái)預(yù)防錯(cuò)誤或者進(jìn)行提醒的,分別是:

1.Override
2.Deprecated
3.Suppresswarnings

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

Override 注解

Override 注解指明被注解的方法需要覆寫(xiě)超類(lèi)中的方法.

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

(注意: JRE5中實(shí)現(xiàn)接口中的方法時(shí)不能使用Override注解,JRE6允許了,很多時(shí)候JRE5會(huì)報(bào)這個(gè)錯(cuò)).

示例1演示了覆寫(xiě)注解:

Java注解示例1:

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

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

 

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

 

復(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就會(huì)直接報(bào)紅叉.現(xiàn)在IDE發(fā)展的很好用,初學(xué)者不應(yīng)該去折騰JDK的命令行了.

Deprecated 注解

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

Java注解示例2

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

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

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

 

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

 

復(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)用這個(gè)方法. 在編譯Test_Deprecated.java 文件時(shí)是不會(huì)有警告消息的. 但在編譯 TestAnnotations.java 時(shí)編譯器就會(huì)給出類(lèi)似這樣的警告信息(Eclipse 會(huì)有警告):

復(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 注解

這個(gè)注解告訴編譯器應(yīng)該屏蔽帶注解的元素和所有子元素的警告信息. 會(huì)壓制一個(gè)元素集和子元素的所有警告信息. 比如,假設(shè)你在一個(gè)class上使用了Suppresswarnings 注解壓住一個(gè)警告,在它的一個(gè)方法上用Suppresswarnings 注解來(lái)壓制另一個(gè)警告,則兩種警告都會(huì)在方法級(jí)別被壓制住. 請(qǐng)參見(jiàn)示例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警告信息. 因?yàn)樵摲椒ǖ倪@類(lèi)警告被壓住了,所以你不會(huì)再看到"deprecation"警告.

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

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

元注解,實(shí)際上被稱(chēng)為注解的注解,包含四種類(lèi)型. 分別是:

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

Target 注解

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

1.@Target(ElementType.TYPE)  —— 可以適用于任何類(lèi)的元素
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) —— 指明聲明類(lèi)型本身是一個(gè)注解類(lèi)型

示例4演示了Target 注解:

Java注解示例4

首先,定義了一個(gè)名為T(mén)est_Target的注解類(lèi)型,帶上 @Target元注解,如下所示:

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

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

 

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

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

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

 

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

 

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

public class TestAnnotations {
   // 這是錯(cuò)誤的做法,編譯不會(huì)通過(guò),因?yàn)樽⒔獾腖evel不對(duì).
   // 元注解指明了只能注解方法,就不能用來(lái)注解屬性
   @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");
   }
}

 

唯一的變化就是注解聲明從方法級(jí)轉(zhuǎn)向字段級(jí),這是不正確的. 因?yàn)槟阋呀?jīng)定義了注解   @Test_Target 只適用在方法級(jí),如果你嘗試編譯這個(gè)類(lèi),你可能會(huì)得到這樣的錯(cuò)誤信息:

復(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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成年人视频免费在线观看 | 希岛爱理作品在线观看 | chinese男同志videos | 2020精品极品国产色在线观看 | 红怡院欧洲 | 日本69sex护士www | 亚洲国产成人久久77 | 翁用力的抽插 | www.色香蕉| 免费激情小视频 | 国产精品久久久久影视不卡 | 韩国美女被的免费视频 | 狠狠色综合久久婷婷色天使 | 欧美成a人片免费看久久 | 98色花堂永久地址国产精品 | 成人福利在线视频免费观看 | 日韩成人在线免费视频 | 国产白白视频在线观看2 | 国产成人免费高清激情明星 | 日b视频免费 | 久久青草免费91线频观看站街 | 波多野结衣在线观看视频 | 亚洲国产精品牛在线 | 狠狠香蕉 | 亚洲精品国产AV成人毛片 | 国产欧美日韩亚洲精品区2345 | 天堂素人在线 | 红楼影视h38bar在线线播放 | 国产肥臀| 日日碰日日操 | 公妇乱淫| 国产a高清 | 无遮挡h肉动漫高清在线 | 精品成人一区二区三区免费视频 | 男女小视频在线观看 | 别停好爽好深好大好舒服视频 | 国产成人精品免费视频大全五级 | 91制片厂制作果冻传媒2021 | a级精品九九九大片免费看 a级动漫 | 小小水蜜桃视频高清在线播放 | 91精品天美精东蜜桃传媒免费 |