Java中三種簡略注解引見和代碼實例。本站提示廣大學習愛好者:(Java中三種簡略注解引見和代碼實例)文章只能為提供參考,不一定能成為您想要的結果。以下是Java中三種簡略注解引見和代碼實例正文
簡略Java注解
JDK5供給的簡略注解類型只要3個. 這三個都是用來預防毛病或許停止提示的,分離是:
1.Override
2.Deprecated
3.Suppresswarnings
須要留意,JDK5(另外一個說法,Tiger)現實上並沒有很多內置注解;相反,它許可焦點Java支撐注解特征的才能. JSR-175中嚴厲劃定它用來界說元數據功效. 須要由法式員編寫自界說的注解類型,其他JSR尺度也編寫了一系列尺度注解類型. 上面將用實例來深刻講授這三個簡略注解.
Override 注解
Override 注解指明被注解的辦法須要覆寫超類中的辦法.
假如某個辦法應用了該注解,卻沒有覆寫超類中的辦法(好比年夜小寫寫錯了,或許參數錯了,或許是子類本身界說的辦法),編譯器就會生成一個毛病.
(留意: JRE5中完成接口中的辦法時不克不及應用Override注解,JRE6許可了,許多時刻JRE5會報這個錯).
示例1演示了覆寫注解:
Java注解示例1:
public class Test_Override {
@Override
public String toString() {
return super.toString() + "測試應用 'Override' 注解";
}
}
假如湧現辦法名字拼寫毛病會產生甚麼? 例如,假如你將toString辦法更名為"tostring"(全小寫),編譯時就會獲得相似上面如許的失足信息:
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)
固然,Eclipse就會直接報紅叉.如今IDE成長的很好用,初學者不該該去折騰JDK的敕令行了.
Deprecated 注解
這個注解注解假如法式挪用一個放棄的(Deprecated,放棄的,過時的)元素時,編譯器應當顯示正告信息. 示例2顯示了若何應用Deprecated 注解.
Java注解示例2
起首,創立一個類,並像上面如許將某個辦法標明為 放棄:
public class Test_Deprecated {
@Deprecated
public void doSomething() {
System.out.println("測試應用 棄用 注解: 'Deprecated'");
}
}
接著,測驗考試從另外一個類挪用這個辦法:
public class TestAnnotations {
public static void main(String arg[]) throws Exception {
new TestAnnotations();
}
public TestAnnotations() {
Test_Deprecated t2=new Test_Deprecated();
t2.doSomething();
}
本例中的doSomething()辦法被聲明為放棄的辦法. 是以,普通情形下不該該挪用這個辦法. 在編譯Test_Deprecated.java 文件時是不會有正告新聞的. 但在編譯 TestAnnotations.java 時編譯器就會給出相似如許的正告信息(Eclipse 會有正告):
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 注解
這個注解告知編譯器應當屏障帶注解的元素和一切子元素的正告信息. 會壓抑一個元素集和子元素的一切正告信息. 好比,假定你在一個class上應用了Suppresswarnings 注解壓住一個正告,在它的一個辦法上用Suppresswarnings 注解來壓抑另外一個正告,則兩種正告都邑在辦法級別被壓抑住. 請拜見示例3.
Java注解示例3:
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"正告.
留意: 在最內層的元素上應用該注解是比擬好的. 是以,假如你只想在一個特定的辦法上壓抑一個正告,你應當在辦法上標注,而不是在類上應用注解.
元注解(Meta-Annotations,Java注解類型)
元注解,現實上被稱為注解的注解,包括四品種型. 分離是:
1.Target
2.Retention
3.Documented
4.Inherited
Target 注解
Target注解注解注解類型實用於哪一種目的元素. 它包括上面的列舉類型值:
1.@Target(ElementType.TYPE) —— 可以實用於任何類的元素
2.@Target(ElementType.FIELD) —— 只實用於字段或屬性
3.@Target(ElementType.METHOD) —— 只實用於辦法的注解
4.@Target(ElementType.PARAMETER) —— 只實用於辦法的參數
5.@Target(ElementType.CONSTRUCTOR) —— 只實用於結構函數
6.@Target(ElementType.LOCAL_VARIABLE) —— 只實用於部分變量
7.@Target(ElementType.ANNOTATION_TYPE) —— 指明聲明類型自己是一個注解類型
示例4演示了Target 注解:
Java注解示例4
起首,界說了一個名為Test_Target的注解類型,帶上 @Target元注解,以下所示:
@Target(ElementType.METHOD)
public @interface Test_Target {
public String doTestTarget();
}
接上去,創立一個類,它將應用Test_Target注解:
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) 注解注解該注解類型只能被用來注解辦法. 假如你編譯這段代碼,不會顯示正告新聞. 然則,假如將這個注解聲明到一個字符串變量上,會產生甚麼呢? 就像上面如許:
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");
}
}
獨一的變更就是注解聲明從辦法級轉向字段級,這是不准確的. 由於你曾經界說了注解 @Test_Target 只實用在辦法級,假如你測驗考試編譯這個類,你能夠會獲得如許的毛病信息:
"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