Kể từ Java 9, chúng ta có thể thêm phương thức private và phương thức private static vào interface. Lợi ích của private method trong interface là giảm trùng lặp mã (code duplication) giữa các phương thức default và static. Ví dụ: nếu hai hay nhiều default method cần chia sẻ mã, có thể tạo private method cho mục đích đó và gọi từ từng default method.
Trong Java 9, các biến/phương thức sau được định nghĩa trong interface:
- Hằng số (Constant)
- Phương thức trừu tượng (Abstract method)
- Phương thức mặc định (Default method)
- Phương thức tĩnh (Static method)
- Phương thức riêng tư (Private method)
- Phương thức riêng tư tĩnh (Private Static method)
Ví dụ minh họa
import java.util.*;
import java.util.stream.*;
interface InterfaceTest {
static void printEvenNumbers() {
getDataStream().filter(i -> i%2==0).forEach(System.out::println);
}
static void printOddNumbers() {
getDataStream().filter(i -> i%2!=0).forEach(System.out::println);
}
private static Stream<Integer> getDataStream() {
// private static method
List<Integer> list = Arrays.asList(10, 13, 5, 15, 12, 20, 11, 25, 16);
return list.stream();
}
}
public class InterfacePrivateMethodTest implements InterfaceTest {
public static void main(String args[]) {
System.out.println("The even numbers: ");
InterfaceTest.printEvenNumbers();
System.out.println("The odd numbers: ");
InterfaceTest.printOddNumbers();
}
}
Kết quả
The even numbers: 10 12 20 16 The odd numbers: 13 5 15 11 25