If a type is annotated with this annotation type, compilers are required to generate an error message unless ...
为什么 SOURCE
或 CLASS
不够用,比如 @Override
。
最佳答案
@FunctionalInterface
注释有两个目的。关于编译器和它必须生成的错误,确实有一个 SOURCE
RetentionPolicy
就足够了,因为在这方面它只影响用 @ 注释的类功能接口(interface)
。
然而,它还有第二个目的,记录这样一个事实,即使用此 interface
作为功能接口(interface)确实是有意的,并且以这种方式使用它的可能性不仅仅是巧合,例如Comparable
不打算以这种方式使用。
因此它被注解为@Documented
,并具有最大的RetentionPolicy
来实现第二个目的。
关于java - 为什么@FunctionalInterface 有运行时保留?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48262298/