41 lines
1.0 KiB
Java
41 lines
1.0 KiB
Java
// functional/FunctionalAnnotation.java
|
|
// (c)2020 MindView LLC: see Copyright.txt
|
|
// We make no guarantees that this code is fit for any purpose.
|
|
// Visit http://OnJava8.com for more book information.
|
|
|
|
@FunctionalInterface
|
|
interface Functional {
|
|
String goodbye(String arg);
|
|
}
|
|
|
|
interface FunctionalNoAnn {
|
|
String goodbye(String arg);
|
|
}
|
|
|
|
/*
|
|
@FunctionalInterface
|
|
interface NotFunctional {
|
|
String goodbye(String arg);
|
|
String hello(String arg);
|
|
}
|
|
Produces error message:
|
|
NotFunctional is not a functional interface
|
|
multiple non-overriding abstract methods
|
|
found in interface NotFunctional
|
|
*/
|
|
|
|
public class FunctionalAnnotation {
|
|
public String goodbye(String arg) {
|
|
return "Goodbye, " + arg;
|
|
}
|
|
public static void main(String[] args) {
|
|
FunctionalAnnotation fa =
|
|
new FunctionalAnnotation();
|
|
Functional f = fa::goodbye;
|
|
FunctionalNoAnn fna = fa::goodbye;
|
|
// Functional fac = fa; // Incompatible
|
|
Functional fl = a -> "Goodbye, " + a;
|
|
FunctionalNoAnn fnal = a -> "Goodbye, " + a;
|
|
}
|
|
}
|