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