【java】java高級部分——註解

java註解Annotation

java中的註解在開發系統中很常用,而且作爲初學者,我們都會用到註解只不過有時候是用的jdk提供的內置註解,所以初學者都不會注意這一個用法。

1.jdk提供的內置註解

  • @Override 諸位在繼承某父類,重寫方法時候這個用到最多。我們在重寫父類的toString()方法,自動 生產都會帶着個註解。
  • @Deprecated。這是一個表示這個方法已經過期。我們打開jdk源碼有時候可以看到這個註解。
  • @SuppressWarnings 這個註解是忽略警告信息。在用Spring的時候也是很常見的。
  • @SuppressWarnings 有常見的值,分別對應如下意思

1.deprecation:使用了不贊成使用的類或方法時的警告(使用@Deprecated使得編譯器產生的警告);
2.unchecked:執行了未檢查的轉換時的警告,例如當使用集合時沒有用泛型 (Generics) 來指定集合保存的類型; 關閉編譯器警告
3.fallthrough:當 Switch 程序塊直接通往下一種情況而沒有 Break 時的警告;
4.path:在類路徑、源文件路徑等中有不存在的路徑時的警告;
5.serial:當在可序列化的類上缺少 serialVersionUID 定義時的警告;
6.finally:任何 finally 子句不能正常完成時的警告;
7.rawtypes 泛型類型未指明
8.unused 引用定義了,但是沒有被使用
9.all:關於以上所有情況的警告。

  • @SafeVarargs jdk1.7提供,主要使用在參數是變參且 是參數類型是泛型。
  • @FunctionalInterface: @FunctionalInterface這是Java1.8 新增的註解,用於約定函數式接口。
    函數式接口概念: 如果接口中只有一個抽象方法(可以包含多個默認方法或多個static方法),該接口稱爲函數式接口。函數式接口其存在的意義,主要是配合Lambda 表達式這個Lambda表達式雖然學了,但是沒有在工程項目中使用,填把坑挖下 來使用。Note:當接口有兩個方法時候,就不能用這個註解了。

2.自定義註解

  1. 創建註解類型的時候用==@inteface==。而且在Idea中創建文件時,如果創建的是註解則文件時綠色的@表示
  2. 元註解

@Target({METHOD,TYPE}) 表示這個註解可以用用在類/接口上,還可以用在方法上
@Retention(RetentionPolicy.RUNTIME) 表示這是一個運行時註解,即運行起來之後,才獲取註解中的相關信息,而不像基本註解如@Override 那種不用運行,在編譯時eclipse就可以進行相關工作的編譯時註解。
@Inherited 表示這個註解可以被子類繼承
@Documented 表示當執行javadoc的時候,本註解會生成相關文檔

3. 實際應用

在具體開發環節中,我是這樣使用的,通過註解定義表對應的實體類名,還有通過註解定義對應的字段名稱和數據庫表對應的屬性名成。

使用註解定義表的名稱。

package com.yzz.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface Table {
    /**
     * 用於修飾實體類,表示實體類名與數據庫表名之間的映射
     * @return
     */
    String name() default "";
}

定義方法的註解

package com.yzz.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface MethodName {
    String method() default  "";
}

javabean的定義

@Table(name="tb_auto")
public class Auto implements Serializable {

    @Column(name="aliencenum",type=String.class,isPrimary = true)
    private String  aliencenum; //車牌號

    @Column(name="cid",type=String.class)
    private String cid;

    @Column(name="atime",type=Date.class)
    private Date atime;

參考文獻
how2j關於註解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章