java之注解
一、java的常用注解
?@Override ? ? ? ? ? ? ? ? ? ? ? ? ? ? 重寫(xiě)覆蓋方法
?@SuppressWarnings ? ? ? ?壓住警告可用于類(lèi)和方法
?@Deprecated ? ? ? ? ? ? ? ? ? ? ?聲明類(lèi)或方法過(guò)時(shí)
?注解@Override用在方法上,當(dāng)我們想重寫(xiě)一個(gè)方法時(shí),在方法上加@Override,當(dāng)我們方法的名字出錯(cuò)時(shí),編譯器就會(huì)報(bào)錯(cuò)。
?
?注解@SuppressWarnings用來(lái)壓制程序中出來(lái)的警告,比如在沒(méi)有用泛型或是方法已經(jīng)過(guò)時(shí)的時(shí)候。
? 注解@Deprecated,用來(lái)表示某個(gè)類(lèi)的屬性或方法已經(jīng)過(guò)時(shí),不想別人再用時(shí),在屬性和方法上用@Deprecated修飾。
?
二、自定義注解
? ?I. 元注解?
? ? ?1、@Target ? 表明注解的作用域
? ? ? 作用域被定義為枚舉類(lèi)型ElementType
? ???ElementType.ANNOTATION_TYPE ? ? ?作用在注解上
? ? ?ElementType.CONSTRUCTOR ? ? ? ? ? ?作用在構(gòu)造方法
? ? ?ElementType.FIELD ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 作用在屬性上
? ? ?ElementType.LOCAL_VARIABLE ? ? ? 作用在本地變量
? ? ?ElementType.METHOD ? ? ? ? ? ? ? ? ? ? ? ? 作用在方法
? ? ?ElementType.PACKAGE ? ? ? ? ? ? ? ? ? ? ? 作用在包
? ? ?ElementType.PARAMETER ? ? ? ? ? ? ? ? 作用在參數(shù)
? ? ?ElementType.TYPE ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 作用在類(lèi)、接口或枚舉類(lèi)型
?注解@Retention可以用來(lái)修飾注解,是注解的注解,稱(chēng)為元注解。
? ?2、@Retention
? ?注解有一個(gè)屬性RetentionPolicy?
? ? RetentionPolicy是一個(gè)枚舉類(lèi)型有3個(gè)值
? ? ??RetentionPolicy.CLASS?? ? ?表示注解的信息被保留在class文件中
? ? ??RetentionPolicy.SOURCE?? ?不會(huì)留在class文件中,注解的信息只會(huì)留在源文件中
? ? ??RetentionPolicy.RUNTIME??注解的信息被保留到運(yùn)行時(shí),所以他們可以用反射的方式讀取。
? ?3、@Documented
? ? ?注解表明制作Javadoc時(shí),是否將注解信息加入文檔。如果注解在聲明時(shí)使用@Document的,則在制作Javadoc時(shí)注解信息會(huì)加入javadoc
? ?
? ?4、@Inherited
? ? ?注解表示注解是否被子類(lèi)繼承。默認(rèn)情況是不會(huì)繼承。當(dāng)在注解聲明時(shí)時(shí)有@Inherited,則注解將會(huì)被該注解的類(lèi)的子類(lèi)所繼承。
? ?II、定義注解
定義新的Annotation類(lèi)型使用@interface關(guān)鍵字(在原有interface關(guān)鍵字前增加@符號(hào))。定義一個(gè)新的Annotation類(lèi)型與定義一個(gè)接口很像,例如:
定義完該Annotation后,就可以在程序中使用該Annotation。使用Annotation,非常類(lèi)似于public、final這樣的修飾符,通常,會(huì)把Annotation另放一行,并且放在所有修飾符之前。例如:
? III、定義注解的成員變量
Annotation只有成員變量,沒(méi)有方法。Annotation的成員變量在Annotation定義中以“無(wú)形參的方法”形式來(lái)聲明,其方法名定義了該成員變量的名字,其返回值定義了該成員變量的類(lèi)型。例如:
示例中定義了2個(gè)成員變量,這2個(gè)成員變量以方法的形式來(lái)定義。
?
? ? III、注解參數(shù)類(lèi)型
? ?注解參數(shù)必須是所有基本類(lèi)型,包括(int, float, boolean), String, Class, enum, Annotation, 以及以上類(lèi)型的數(shù)組。
? ? IV、注解參數(shù)賦值
? ? 注解的參數(shù)要么在定義是賦值,要么在使用時(shí)賦值。如果注解中定義參數(shù)value,并且在使用時(shí),value是唯一的需要賦值的參數(shù),則無(wú)需指出參數(shù)名字,直接把參數(shù)值填在括號(hào)里。
@MyAnnonation(value="amethod",count=2) public void aMethod(){ } @Target(ElementType.METHOD) //注解作用在方法 @Retention(RetentionPolicy.RUNTIME) //注解保留到運(yùn)行時(shí) public @interface MyAnnonation { String value() ; int count() default 1; } @MyAnnonation("method") public void method(){ } RetentionPolicy.RUNTIME 可以讓你從JVM中讀取Annotation注解的信息,以便在分析程序的時(shí)候使用.
@MyAnnonation(value="amethod",count=2) public void aMethod(){ } @Target(ElementType.METHOD) //注解作用在方法 @Retention(RetentionPolicy.RUNTIME) //注解保留到運(yùn)行時(shí) public @interface MyAnnonation { String value() ; int count() default 1; } @MyAnnonation("method") public void method(){ }
?
總結(jié)
- 上一篇: JavaFX之TableView的Sel
- 下一篇: 想配台电脑,预算大概5000左右,能带得