The @FunctionalInterface
annotation serves two purposes. Regarding the compiler and the error it has to generate it would be indeed enough to have a SOURCE
RetentionPolicy
as in this regard it only affects the very class annotated with @FunctionalInterface
.
However, it has a second purpose, documenting the fact that using this interface
as a functional interface is indeed intended and the possibility to use it this way not just a coincidence like with, e.g. Comparable
which is not intended to be used that way.
Therefore it is annotated with @Documented
and has the maximum RetentionPolicy
to fulfill the second purpose.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…