Javassa käyttöliittymät ovat välttämättömiä, kun on kyse luokkasopimusten asettamisesta ja koodin yhdenmukaisuuden takaamisesta Java-ohjelmoinnin alueella. Se toimii luokan suunnitelmana hahmottelemalla useita menetelmiä, jotka toteutusluokan on toteutettava. Kehittäjät voivat saavuttaa koodinsa abstraktion, modulaarisuuden ja ylläpidettävyyden rajapintoja käyttämällä. The erilaisia käyttöliittymätyyppejä Javassa käsitellään tässä osiossa.
Merkin käyttöliittymät
Merkkirajapinnat, joita usein kutsutaan tunnisterajapinnoiksi, ovat rajapintoja, joissa ei ole ilmoitettu mitään menetelmiä. Yksinkertaisesti sanottuna ne toimivat markkereina, jotka osoittavat, että luokalla, joka toteuttaa markkeriliittymän, on erityisiä ominaisuuksia tai ominaisuuksia. Java-ajonaikainen ympäristö ja muut työkalut käyttävät näitä API:ita lisätoimintojen tai -tietojen toimittamiseen. Serialisoitava, kloonattava ja etäkäyttö ovat joitakin esimerkkejä Javan merkkiliittymistä.
Toiminnalliset rajapinnat
Osana lambda-lausekkeiden ja toiminnallisen ohjelmoinnin parannuksia Java 8:aan lisättiin toiminnallisia rajapintoja. Toiminnallisena sanotaan olevan käyttöliittymä, jossa on täsmälleen yksi abstrakti menetelmä. Lisäksi oletus- ja staattiset menetelmät ovat mahdollisia. Monet Java-toiminnalliset ohjelmointiominaisuudet, kuten lambda-lausekkeet ja menetelmäviittaukset, käyttävät toiminnallisia rajapintoja. Predicate, Consumer, Function ja Supplier ovat vain muutamia java.util.function-paketin tarjoamista sisäänrakennetuista toiminnallisista liitännöistä.
SAM (Single Abstract Method) -rajapinnat
Ennen Java 8:aa oli olemassa tietynlaisia toiminnallisia rajapintoja, joita kutsuttiin SAM-rajapinnoiksi. Näillä liitännöillä voi olla mikä tahansa määrä oletus- tai staattisia menetelmiä, mutta vain yksi abstrakti menetelmä. Runnable, Comparator ja MouseListener ovat muutamia Java 8:aa edeltäviä sovellusliittymiä, jotka sisältävät esimerkkejä SAM-liittymästä. Toiminnallisten rajapintojen käyttöönoton myötä Java 8:ssa SAM-rajapintoja voidaan käyttää lambda-lausekkeiden kanssa ja pitää niitä toiminnallisina liitäntöinä.
javascriptin globaaleja muuttujia
Normaalit käyttöliittymät
Javan yleisin rajapintatyyppi on normaalit rajapinnat. Niissä on yksi tai useampi abstrakti menetelmä, jotka rajapinnan toteuttavien luokkien on toteutettava. Java 8:sta alkaen normaalit rajapinnat voivat sisältää lisäksi oletus- ja staattisia menetelmiä. Kehittäjät käyttävät normaaleja rajapintoja määrittääkseen säännöt tai vaatimukset, joita luokkien on noudatettava. List, Set ja Map, jotka kaikki löytyvät java.util-paketista, ovat esimerkkejä tyypillisistä Java-liittymistä.
Useita perintöliitäntöjä
Java sallii luokkien toteuttaa useita rajapintoja, mutta se ei tue useiden luokkien periytymistä. Liitännät, jotka luokka on toteuttanut määrittämään samanaikaisesti useita sopimuksia tai perimään käyttäytymistä, tunnetaan useana periytyvänä liitännänä. Luokka voi tarjota kunkin rajapinnan hahmottelemia toimintoja toteuttamalla useita rajapintoja. Tämän toiminnon avulla kehittäjät voivat käyttää koodia uudelleen ja lisätä ideoidensa mukauttavuutta.
Tässä on esimerkkejä koodista jokaiselle Java-rajapinnalle ja niitä vastaava tulos:
kuinka lähettää merkkijono int: hen javassa
Merkin käyttöliittymät
MarkerInterfaceExample.java
import java.io.Serializable; // Marker Interface interface MyMarkerInterface extends Serializable { } public class MarkerInterfaceExample { public static void main(String[] args) { MyMarkerInterface obj = new MyMarkerInterface() { }; System.out.println(obj instanceof Serializable); // true } }
Lähtö:
true
Toiminnalliset rajapinnat
FunctionalInterfaceExample.java
import java.util.function.Predicate; public class FunctionalInterfaceExample { public static void main(String[] args) { Predicate isLengthGreaterThan5 = str -> str.length() > 5; System.out.println(isLengthGreaterThan5.test('Hello')); // false System.out.println(isLengthGreaterThan5.test('OpenAI')); // true } }
Lähtö:
false true
SAM (Single Abstract Method) -rajapinnat:
SAMInterfaceExample.java
interface MySAMInterface { void performAction(); } public class SAMInterfaceExample { public static void main(String[] args) { MySAMInterface obj = () -> System.out.println('Performing action'); obj.performAction(); // Performing action } }
Lähtö:
kuinka muuntaa kokonaisluku merkkijonoksi java
Performing action
Normaalit käyttöliittymät
NormalInterfaceExample.java
import java.util.List; import java.util.ArrayList; interface MyInterface { void printMessage(); } class MyClass implements MyInterface { @Override public void printMessage() { System.out.println('Hello, World!'); } } public class NormalInterfaceExample { public static void main(String[] args) { MyInterface obj = new MyClass(); obj.printMessage(); // Hello, World! } }
Lähtö:
tietokoneen organisaatio ja arkkitehtuuri
Hello, World!
Useita perintöliitäntöjä:
MultipleInheritanceInterfaceExample.java
interface Interface1 { void method1(); } interface Interface2 { void method2(); } class MyClass implements Interface1, Interface2 { @Override public void method1() { System.out.println('Method 1'); } @Override public void method2() { System.out.println('Method 2'); } } public class MultipleInheritanceInterfaceExample { public static void main(String[] args) { MyClass obj = new MyClass(); obj.method1(); // Method 1 obj.method2(); // Method 2 } }
Lähtö:
Method 1 Method 2
Nämä esimerkit osoittavat erityyppisten Java-rajapintojen käytön ja käyttäytymisen. Voit suorittaa jokaisen koodinpätkän yksitellen tarkkaillaksesi vastaavaa tulosta.
Yhteenvetona voidaan todeta, että Java-rajapinnat tarjoavat tehokkaan menetelmän sopimusten määrittämiseen ja koodin modulaarisuuden saavuttamiseen. Rajapinnat ovat Java-kehityksessä välttämättömiä, olivatpa ne tiettyjä piirteitä osoittavia merkkirajapintoja, toiminnallisen ohjelmoinnin mahdollistavia toiminnallisia rajapintoja, sopimuksia määritteleviä tavallisia rajapintoja tai useita perintöliittymiä, jotka yhdistävät useita sopimuksia. Java-kehittäjät pystyvät paremmin rakentamaan selkeää, laajennettavaa koodia, kun he ovat tietoisia eri käyttöliittymätyypeistä ja niiden toiminnoista.