Concept of functional interface

前端 未结 4 1188
感动是毒
感动是毒 2021-01-06 08:23

When I\'m shooting a glance at lambda expressions, the book touches on a functional interface that has only one abstract method. My issue addresses on that quiz que

4条回答
  •  北荒
    北荒 (楼主)
    2021-01-06 08:50

    An easy way to find out would be to try to define a class that implements SmartAdder. The compiler will tell you you need to implement both add(int, int) and add(double, double).

    It's understandable that you thought add(double, double) would override add(int, int), but they are in fact separate methods, and could potentially have totally unrelated implementations.

    If SmartAdder had defined a default implementation of add(int, int) it would be a functional interface still:

    public interface SmartAdder extends Adder {
       int add(double a, double b);
    
       default int add(int a, int b) {
         return add((double)a, (double)b); // this calls the double method instead
      }
    }
    

    You may also have come across the @FunctionalInterface annotation - this can be placed on an interface to enforce at compile-time that the interface has exactly one abstract method. If SmartAdder was annotated with @FunctionalInterface the interface itself would not compile.

提交回复
热议问题