Private metoder i Java-grænseflader
1. Oversigt
Fra Java 9 kan private metoder føjes til grænseflader i Java . Lad os i denne korte vejledning diskutere, hvordan vi kan definere disse metoder og deres fordele.
2. Definering af private metoder i grænseflader
Private metoder kan implementeres statiske eller ikke-statisk . Dette betyder, at vi i en grænseflade er i stand til at skabe private metoder til at indkapsle kode fra begge standard og statisk offentlige metodesignaturer.
Lad os først se på, hvordan vi kan bruge private metoder fra standardgrænseflademetoder:
public interface Foo {
default void bar() {
System.out.print("Hello");
baz();
}
private void baz() {
System.out.println(" world!");
}
}
bar() er i stand til at gøre brug af den private metode baz() ved at kalde det fra dets standardmetode.
Lad os derefter tilføje en statisk defineret privat metode til vores Foo grænseflade:
public interface Foo {
static void buzz() {
System.out.print("Hello");
staticBaz();
}
private static void staticBaz() {
System.out.println(" static world!");
}
}
Inden for grænsefladen kan andre statisk definerede metoder gøre brug af disse private statiske metoder.
Lad os endelig kalde de definerede standard- og statiske metoder fra en konkret klasse:
public class CustomFoo implements Foo {
public static void main(String... args) {
Foo customFoo = new CustomFoo();
customFoo.bar();
Foo.buzz();
}
}
Outputtet er strengen "Hej verden!" fra opkaldet til bar() metode og "Hej statisk verden!" fra opkaldet til buzz() metode.
3. Fordele ved private metoder i grænseflader
Lad os tale om fordelene ved private metoder, nu hvor vi har defineret dem.
Berørt i det foregående afsnit er grænseflader i stand til at bruge private metoder til at skjule detaljer om implementering fra klasser, der implementerer grænsefladen. Som et resultat er en af hovedfordelene ved at have disse i grænseflader indkapsling.
En anden fordel er (som med private metoder generelt), at der er mindre duplikering og mere genbrugelig kode tilføjet til grænseflader til metoder med lignende funktionalitet.
4. Konklusion
I denne tutorial har vi dækket, hvordan man definerer private metoder inden for en grænseflade, og hvordan vi kan bruge dem fra både statiske og ikke-statiske sammenhænge. Den kode, vi brugte i denne artikel, kan findes på GitHub.