logo

„Java“ žymeklio sąsaja

Šiame skyriuje aptarsime apie žymeklio sąsaja Java , jos naudoja, įmontuotas ( Serializuojama , Galima klonuoti ir nuotolinės sąsajos ) ir pasirinktinio žymeklio sąsaja su pavyzdžiais.

Kas yra žymeklio sąsaja?

An sąsaja kuriame nėra metodų, laukų ir konstantų, yra žinoma kaip žymeklio sąsaja . Kitaip tariant, tuščia sąsaja yra žinoma kaip žymeklio sąsaja arba žymų sąsaja. Ji pateikia vykdymo laiko tipo informaciją apie objektą. Tai yra priežastis, dėl kurios JVM ir kompiliatorius turi papildomos informacijos apie objektą. The Serializuojama ir Galima klonuoti sąsajos yra žymeklio sąsajos pavyzdys. Trumpai tariant, tai rodo signalą arba komandą JVM.

Žymeklio sąsajos deklaracija yra tokia pati kaip sąsaja Java, tačiau sąsaja turi būti tuščia. Pavyzdžiui:

 public interface Serializable { } 

Yra dvi žymeklio sąsajos alternatyvos, kurios duoda tokį patį rezultatą kaip ir žymeklio sąsaja.

    Vidinės vėliavos:Jis gali būti naudojamas vietoje žymeklio sąsajos, norint nurodyti bet kokią konkrečią operaciją.Anotacijos:Nuo Java 5, žymeklio sąsajos praleistos . Vietoj žymeklio sąsajos „Java 5“ pateikia anotacijos kad būtų pasiekti tokie patys rezultatai. Tai suteikia lanksčią metaduomenų galimybę. Todėl pritaikę anotacijas bet kuriai klasei galime atlikti konkretų veiksmą.

Žymeklio sąsajos naudojimas

Žymeklio sąsaja naudojama kaip žyma, kuri pranešimu informuoja „Java“ kompiliatorių, kad jis galėtų pridėti tam tikrą specifinį elgesį jį įgyvendinančiai klasei. „Java“ žymeklio sąsaja yra naudinga, jei turime informacijos apie klasę ir ta informacija niekada nesikeičia, tokiais atvejais naudojame žymeklio sąsają, kuri reprezentuoja tą patį. Įdiegus tuščią sąsają, kompiliatorius turi atlikti kai kurias operacijas.

Jis naudojamas logiškai padalinti kodą ir geras būdas suskirstyti kodą į kategorijas. Tai naudingiau kuriant API ir tokiose sistemose kaip „Spring“.

jei dar bash

Integruota žymeklio sąsaja

Į Java , įtaisytosios žymeklio sąsajos yra sąsajos, kurios jau yra JDK ir paruoštos naudoti. Yra daug įmontuotų žymeklio sąsajų, kai kurios iš jų yra:

  • Klonuojama sąsaja
  • Serializuojama sąsaja
  • Nuotolinė sąsaja

Išsamiai aptarkime po vieną.

Klonuojama sąsaja

Valoma sąsaja Java taip pat yra žymeklio sąsaja, kuri priklauso java.lang paketą. Jis sukuria objekto su skirtingu pavadinimu repliką (kopiją). Galime įdiegti sąsają toje klasėje, kurios klasės objektą klonuoti. Tai nurodo klonas () Objektų klasės metodas. Jei klasėje neįdiegiame Cloneable sąsajos ir iškviečiame metodą Clone(), jis išmeta ClassNeSupportedException.

Atminkite, kad klasė, kuri įgyvendina Cloneable sąsają, turi nepaisyti klono() metodo viešuoju metodu. Pažiūrėkime pavyzdį.

Produktas.java

 import java.util.Scanner; public class Product implements Cloneable { int pid; String pname; double pcost; //Product class constructor public Product (int pid, String pname, double pcost) { this.pid = pid; this.pname = pname; this.pcost = pcost; } //method that prints the detail on the console public void showDetail() { System.out.println('Product ID: '+pid); System.out.println('Product Name: '+pname); System.out.println('Product Cost: '+pcost); } public static void main (String args[]) throws CloneNotSupportedException { //reading values of the product from the user Scanner sc = new Scanner(System.in); System.out.print('Enter product ID: '); int pid = sc.nextInt(); System.out.print('Enter product name: '); String pname = sc.next(); System.out.print('Enter product Cost: '); double pcost = sc.nextDouble(); System.out.println('-------Product Detail--------'); Product p1 = new Product(pid, pname, pcost); //cloning the object of the Product class using the clone() method Product p2 = (Product) p1.clone(); //invoking the method to print detail p2.showDetail(); } } 

Išvestis:

pervardyti katalogą linux
 Enter product ID: 139872 Enter product name: Printer Enter product Cost: 3459.67 -------Product Detail-------- Product ID: 139872 Product Name: Printer Product Cost: 3459.67 

Serializuojama sąsaja

Tai žymeklio sąsaja „Java“, kuri apibrėžta java.io paketą. Jei norime, kad klasė būtų serializuojama, turime įdiegti Serializuojama sąsaja. Jei klasė įgyvendina Serializable sąsają, mes galime suserializuoti arba deserializuoti tos klasės objekto būseną.

Serializavimas (objekto pavertimas baitų srautu) yra mechanizmas, kurio metu objekto būsena nuskaitoma iš atminties ir įrašoma į failą arba duomenų bazę . Deserializacija (baitų srauto pavertimas objektu) yra priešinga serializacijai, kurią tai reiškia objekto būsenos nuskaitymas iš failo ar duomenų bazės ir įrašymas atgal į atmintį vadinama objekto deserializacija.

„Java“ žymeklio sąsaja

Serializavimą (rašymą) galima pasiekti naudojant „ObjectOutputStream“. klasę ir deserializaciją (skaitymą) galima pasiekti naudojant „ObjectInputStream“. klasė.

Pažiūrėkime serializacijos ir deserializacijos pavyzdžius.

Serializacijos pavyzdys

Darbuotojas.java

 import java.io.Serializable; public class Employee implements Serializable { int empid; String empname; public Employee(int empid, String empname) { this.empid = empid; this.empname = empname; } } 

SerializationExample.java

kas yra ypatingas veikėjas
 import java.io.*; class SerializationExample { public static void main(String args[]) { try { //Creating the object Employee emp =new Employee(1187345,'Andrew'); //Creating stream and writing the object FileOutputStream fout=new FileOutputStream('employee data.txt'); ObjectOutputStream out=new ObjectOutputStream(fout); out.writeObject(emp); out.flush(); //closing the stream out.close(); System.out.println('Data has been read from the file.'); } catch(Exception e) { e.printStackTrace(); } } } 

Išvestis:

 Data has been read from the file. 

Deserializacijos pavyzdys

Deserializuokime objekto būseną.

DeserializationExample.java

 import java.io.*; class DeserializationExample { public static void main(String args[]) { try { //Creating stream to read the object ObjectInputStream in=new ObjectInputStream(new FileInputStream('employee data.txt')); Employee emp=(Employee)in.readObject(); //printing the data of the serialized object System.out.println(emp.empid+' '+emp.empname); //closing the stream in.close(); } catch(Exception e) { e.printStackTrace(); } } } 

Išvestis:

 1187345 Andrew 

Nuotolinė sąsaja

Nuotolinė sąsaja yra žymeklio sąsaja, kuri priklauso java.rmi paketą. Jis pažymi objektą kaip nuotolinį, kurį galima pasiekti iš kito įrenginio (pagrindinio kompiuterio). Turime įdiegti nuotolinę sąsają, jei norime, kad objektas būtų nuotolinis. Jis identifikuoja sąsajas, kurių metodai gali būti iškviesti iš ne vietinio JVM. Bet kuris nuotolinis objektas turi tiesiogiai arba netiesiogiai įdiegti sąsają.

poeilutės funkcija java

Apibrėžkime nuotolinę sąsają ir įdiegkime ją Java programoje.

Nuotolinės sąsajos apibrėžimas

 import java.rmi.*; public interface AddAll extends Remote { public int add(int r, int s)throws RemoteException; } 

Įdiekite nuotolinę sąsają

Yra du nuotolinės sąsajos diegimo būdai:

stygų lygybė java
  • Išplėsdami UnicastRemoteObject klasę
  • Naudojant UnicastRemoteObject klasės metodą exportObject()

AddAllRemote.java

 import java.rmi.*; import java.rmi.server.*; public class AddAllRemote extends UnicastRemoteObject implements Adder { AddAllRemote()throws RemoteException { super(); } public int add(int r, int s) { return r+s; } 

Sukurkite ir paleiskite nuotolinę programą

Serveris.java

 import java.rmi.*; import java.rmi.registry.*; public class Server { public static void main(String args[]) { try { AddAll stub=new AddAllRemote(); Naming.rebind('rmi://localhost:5000/sak',stub); } catch(Exception e) { System.out.println(e); } } } 

Sukurkite ir paleiskite kliento programą

Klientas.java

 import java.rmi.*; public class Client { public static void main(String args[]) { try { AddAll stub=(AddAll)Naming.lookup('rmi://localhost:5000/sak'); System.out.println(stub.add(29,18)); } catch(Exception e) { } } } 

Pasirinktinė žymeklio sąsaja

Be įmontuotos žymeklio sąsajos, Java taip pat leidžia mums sukurti savo žymeklio sąsają. Pažiūrėkime pavyzdį.

CustomMarkerInterfaceExample.java

 //custom marker interface interface Car { } //custom marker interface interface Engine { } //class that implements the Car marker interface class Vehicle implements Car { static void isVehicle() { System.out.println('Car is a vehicle.'); } } //class that implements the Engine marker interface class Status implements Engine { static void isWorking() { System.out.println('Yes, engine is working.'); } } //main class public class CustomMarkerInterfaceExample { public static void main(String args[]) { //invoking the methods of the class Vehicle.isVehicle(); Status.isWorking(); } } 

Išvestis:

 Car is a vehicle. Yes, engine is working.