interface Drawable {
void draw();
}
class Circle implements Drawable {
public void draw() {
System.out.println("Drawing a circle");
}
}
public class Main {
public static void main(String[] args) {
Drawable shape = new Circle();
shape.draw();
}
}
配合著java 8 出來的lambda expression
lambda expression 只能用於標有 @FunctionalInterface 的interface
例如java.util.function包中的 Predicate、Function、Consumer等函數式接口
@FunctionalInterface
interface Calculator {
int calculate(int a, int b);
}
public class Main {
public static void main(String[] args) {
// 使用 Lambda 表達式實現函數式接口
Calculator calc = (a, b) -> a + b;
System.out.println(calc .calculate(5, 3));
}
}
通常用於向compiler或runtime environment提供一些額外的資訊
例如Serializable接口
Serializable就像是個Tag(標籤),只是告訴Java這個類別class是可以被序列化
import java.io.Serializable;
class Student implements Serializable {
private int studentId;
...
}
訴說著Student類可以被序列化與反序列化