logo

Marker Interface Java nyelven

Ebben a részben arról fogunk beszélni marker interfész Java nyelven , annak használ, beépített ( Sorozatozható , Klónozható és távoli interfészek ) és egyéni marker felület példákkal.

Mi az a marker interfész?

An felület amely nem tartalmaz metódusokat, mezőket és konstansokat, az úgynevezett marker interfész . Más szavakkal, az üres felületet ún marker interfész vagy címke felület. Futásidejű típusú információkat szolgáltat egy objektumról. Ez az oka annak, hogy a JVM és a fordító további információval rendelkezik egy objektumról. A Sorozatozható és Klónozható Az interfészek a marker interfész példája. Röviden: jelet vagy parancsot jelez a JVM-nek.

A marker interfész deklarációja megegyezik a Java interfészével, de az interfésznek üresnek kell lennie. Például:

 public interface Serializable { } 

A marker interfésznek két alternatívája van, amely ugyanazt az eredményt adja, mint a marker interfész.

    Belső zászlók:A marker interfész helyett használható bármilyen konkrét művelet jelzésére.Megjegyzések:A Java 5 óta marker interfészek kimaradnak . A jelölőfelület helyett a Java 5 biztosítja a megjegyzések ugyanazokat az eredményeket elérni. Rugalmas metaadat-képességet tesz lehetővé. Ezért ha bármely osztályhoz annotációkat alkalmazunk, akkor konkrét műveletet hajthatunk végre.

A marker interfész használata

A Marker interfész címkeként használatos, amely egy üzenettel tájékoztatja a Java fordítót, hogy az valamilyen különleges viselkedést tudjon adni az azt megvalósító osztálynak. A Java marker interfész akkor hasznos, ha információval rendelkezünk az osztályról, és ezek az információk soha nem változnak, ilyenkor a marker interface reprezentációt használjuk, hogy ugyanazt ábrázoljuk. Az üres interfész megvalósítása néhány művelet elvégzésére utasítja a fordítót.

A kód logikai felosztására szolgál, és jó módszer a kód kategorizálására. Hasznosabb API-k fejlesztéséhez és olyan keretrendszerekhez, mint a Spring.

hogyan lehet a karakterláncot int-re változtatni

Beépített marker interfész

Ban ben Jáva , a beépített marker interfészek azok az interfészek, amelyek már jelen vannak a JDK-ban és használatra készek. Számos beépített marker interfész létezik, ezek közül néhány:

  • Klónozható felület
  • Sorosozható interfész
  • Távoli interfész

Beszéljük meg egyenként részletesen.

Klónozható felület

Tisztítható felület a Java-ban is egy marker interfész, amelyhez tartozik java.lang csomag. Létrehoz egy más nevű objektum replikáját (másolatát). Az interfészt abban az osztályban tudjuk megvalósítani, hogy melyik osztályobjektumot klónozzuk. Jelzi a klón() az Object osztály metódusa. Ha nem valósítjuk meg a Cloneable felületet az osztályban, és meghívjuk a clone() metódust, akkor a ClassNotSupportedException.

Vegye figyelembe, hogy a klónozható felületet megvalósító osztálynak nyilvános metódussal kell felülírnia a clone() metódust. Lássunk egy példát.

Product.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(); } } 

Kimenet:

lista java
 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 

Sorosozható interfész

Ez egy jelölőfelület a Java-ban, amely a java.io csomag. Ha az osztályt szerializálhatóvá akarjuk tenni, meg kell valósítanunk a Sorozatozható felület. Ha egy osztály megvalósítja a Serializable interfészt, akkor sorosozhatjuk vagy deszerializálhatjuk az adott osztály objektumának állapotát.

A szerializálás (egy objektum bájtfolyammá alakítása) egy olyan mechanizmus, amelyben Az objektum állapotát a rendszer kiolvassa a memóriából, és fájlba vagy adatbázisba írja . A deszerializáció (a bájtfolyam objektummá konvertálása) a szerializálás ellentéte azt jelenti az objektum állapotának kiolvasása fájlból vagy adatbázisból, és visszaírása a memóriába objektum deszerializációjának nevezzük.

Marker Interface Java nyelven

A szerializálást (írást) a ObjectOutputStream osztály és deszerializáció (olvasás) érhető el azzal ObjectInputStream osztály.

Lássunk példát a szerializálásra és a deszerializálásra.

Példa a szerializálásra

Munkavállaló.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

 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(); } } } 

Kimenet:

 Data has been read from the file. 

Példa a deszerializációra

Deszerializáljuk az objektum állapotát.

DeserializationExample.java

1 millió hány 0
 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(); } } } 

Kimenet:

 1187345 Andrew 

Távoli interfész

Távoli interfész egy marker interfész, amelyhez tartozik java.rmi csomag. Távoliként jelöl meg egy objektumot, amely egy másik gépről (gazdagépről) elérhető. Meg kell valósítanunk a Remote interfészt, ha egy objektumot távolivá akarunk tenni. Azonosítja azokat az interfészeket, amelyek metódusai meghívhatók egy nem helyi JVM-ről. Minden távoli objektumnak közvetlenül vagy közvetve meg kell valósítania az interfészt.

Definiáljunk egy távoli felületet, és implementáljuk egy Java programban.

Távoli interfész meghatározása

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

Valósítsa meg a távoli interfészt

A távoli felület megvalósításának két módja van:

  • Az UnicastRemoteObject osztály kiterjesztésével
  • Az UnicastRemoteObject osztály exportObject() metódusával

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; } 

Hozzon létre és indítsa el a távoli alkalmazást

Server.java

sql adattípusok
 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); } } } 

Hozzon létre és indítsa el az ügyfélalkalmazást

Client.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) { } } } 

Egyedi marker interfész

A beépített marker interfészen kívül a Java saját marker interfész létrehozását is lehetővé teszi. Lássunk egy példát.

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(); } } 

Kimenet:

 Car is a vehicle. Yes, engine is working.