ฟีเจอร์ใหม่ใน Java 9: Private Methods ใน Interface
ตั้งแต่ Java 9 สามารถเพิ่ม private methods และ private static methods ใน interface ได้ ช่วยลด code duplication ระหว่าง default และ static methods
รายการสมาชิกที่ Interface รองรับใน Java 9
- Constant (public static final fields)
- Abstract method
- Default method
- Static method
- Private method (ใหม่)
- Private Static method (ใหม่)
ตัวอย่าง: Private Static Method ช่วยลดซ้ำ
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 method - ใช้ร่วมได้ภายใน interface
private static Stream<Integer> getDataStream() {
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();
}
}
Output
The even numbers: 10 12 20 16 The odd numbers: 13 5 15 11 25
ประโยชน์ของ Private Methods ใน Interface
- ลด code duplication ระหว่าง default/static methods
- ซ่อน implementation details ภายใน interface
- เพิ่มความ maintainable และ readable
สรุป
Java 9 ทำให้ Interface มีความสามารถใกล้เคียง Class มากขึ้น รองรับ private methods ทั้ง instance และ static