interface做注解的注解類型,被定義成Java語言規范:
一個被它注解的接口只能有一個抽象方法,有兩種例外:
是接口允許有實現的方法,這種實現的方法是用default關鍵字來標記的(java反射中java.lang.reflect.Method#isDefault()方法用來判斷是否是default方法)第二如果聲明的方法和java.lang.Object中的某個方法一樣,它可以不當做未實現的方法,不違背這個原則:一個被它注解的接口只能有一個抽象方法,比如:java public interface Comparator{ int compare(T o1, T o2); boolean equals(Object obj); }
如果一個類型被這個注解修飾,那么編譯器會要求這個類型必須滿足如下條件:
這個類型必須是一個interface,而不是其他的注解類型、枚舉enum或者類class這個類型必須滿足function interface的所有要求,如你個包含兩個抽象方法的接口增加這個注解,會有編譯錯誤。
編譯器會自動把滿足function interface要求的接口自動識別為function interface。