Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我知道它可以应用于接口,但是由于具有默认方法的接口(Java 8+ 接口)现在非常接近抽象类,现在想知道我们可以将@FunctionalInterface 与抽象类一起使用吗?
如果不是,为什么我们不能?
您不能应用于@FunctionalInterface抽象类、枚举或其他注释。来自java 文档:
@FunctionalInterface
如果使用此注解类型对类型进行注解,则编译器需要生成错误消息,除非: 该类型是接口类型,而不是注释类型、枚举或类。 带注释的类型满足功能接口的要求。
如果使用此注解类型对类型进行注解,则编译器需要生成错误消息,除非:
查看更多抽象类作为功能接口
顾名思义,它应该用于接口。将其应用于类结果如下:
错误:(10, 1) java: Unexpected @FunctionalInterface 注解 xxx 不是函数式接口
但这不是什么大问题,因为这只是带有一种方法的接口的标记接口。
功能接口是为了特定目的而存在的——它只与严格来说只有一个抽象方法的接口一起使用。如果不是,那么编译器会抱怨 -
Invalid '@FunctionalInterface' annotation; TestInterface is not a functional interface
并且将它与任何其他类一起使用是没有意义的,枚举东西