If a type is annotated with this annotation type, compilers are required to generate an error message unless ...
Why isn't SOURCE
or CLASS
enough, like for @Override
.
If a type is annotated with this annotation type, compilers are required to generate an error message unless ...
Why isn't SOURCE
or CLASS
enough, like for @Override
.
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.