Javaでマーカーインターフェイスを実装する方法は?



この記事では、Javaのマーカーインターフェイスと呼ばれるインターフェイスの興味深い側面について簡単に説明し、実装をフォローアップします。

この記事では、マーカーインターフェイスインと呼ばれるインターフェイスの興味深い側面について簡単に説明します。 実装をフォローアップします。この記事では、次のポイントについて説明します。

それでは始めましょう、





マーカーインターフェイスは空のインターフェイスです。つまり、メソッドやフィールドは含まれていません。これはタグ付けインターフェースとも呼ばれ、このインターフェースを実装するクラスに特別な動作があることをJVMに示したり通知したりするために使用されます。コードを分類する効率的な方法は、マーカーインターフェイスを使用して実現できます。このようなインターフェイスの例は、Serializable、Cloneable、およびRemoteInterfaceです。

Javaのマーカーインターフェイスに関するこの記事に移動します



シリアル化可能なインターフェイス

Javaでのシリアル化は、オブジェクトの状態をバイトストリームに変換するプロセスとして定義できます。これは、java.io.packageにあるシリアル化可能なインターフェースを使用して実現できます。シリアライズ可能なクラスのすべてのサブタイプは、それ自体がシリアライズ可能であることに注意する必要があります。

例:

importjava.io。*クラスMainはSerializableを実装します{intj String s //クラスコンストラクタpublicMain(int j、String s){this.j = j this.s = s}} public class Test {public static void main (String [] args)throws IOException、ClassNotFoundException {Main obj = new Main(25、 'HelloWorld')//シリアル化 'obj' FileOutputStream fos = new FileOutputStream( 'pqr.txt')ObjectOutputStream oos = new ObjectOutputStream(fos)oos .writeObject(obj)// 'obj'の逆シリアル化FileInputStreamfis = new FileInputStream( 'pqr.txt')ObjectInputStream ois = new ObjectInputStream(fis)Main b =(Main)ois.readObject()//オブジェクトのダウンキャストSystem.out.println(b.j + '' + bs)//ストリームを閉じるoos.close()ois.close()}}

出力:
25 HelloWorld



Javaのマーカーインターフェイスに関するこの記事に移動します

クローン可能なインターフェイス:

このインターフェースは、java.langパッケージにあります。クローン作成は、異なる名前のオブジェクトのレプリカまたは正確なコピーを生成するメカニズムです。
Cloneable Interfaceはクラスによって実装され、object.clone()メソッドに、そのクラスのインスタンスのフィールドごとのコピーを作成することが合法であることを示します。
CloneNotSupportedExceptionは、複製可能なインターフェイスを実装せずにcloneメソッドを呼び出すクラスに対してスローされます。

セレンウェブドライバーでポップアップウィンドウを処理する方法

例:

import java.lang.Cloneable class javaCloneimplements Cloneable {int j String s //クラスコンストラクターの定義publicjavaClone(int j、String s){this.j = j this.s = s} // clone()メソッドのオーバーライド@保護されたオブジェクトのオーバーライドclone()throws CloneNotSupportedException {return super.clone()}} public class Main {public static void main(String [] args)throws CloneNotSupportedException {javaClone c = new javaClone(18、 'HelloWorld')//クローニング ' c 'および// bで新しいクローンオブジェクト参照を保持// javaCloneのダウンキャストb =(javaClone)c.clone()System.out.println(bj)System.out.println(bs)}}

出力:
18
こんにちは世界

Javaのマーカーインターフェイスに関するこの記事に移動します

リモートインターフェース:

リモートオブジェクトは、メソッドを別のJVMから、場合によっては別のホストから呼び出すことができるオブジェクトとして定義できます。このインターフェースは、java.rmiパッケージに含まれています。リモートオブジェクトは、このメソッドを直接的または間接的に実装する必要があります。

RMI:

タイプキャストdoubleからintjava

リモートメソッド呼び出しは、オブジェクトが別のJVMで実行されているオブジェクトのメソッドを呼び出すことを可能にするAPIです。スタブとスケルトンのオブジェクトを使用して、2つのアプリケーション間のリモート通信を提供します。

スタブ:

スタブは、クライアント側に存在し、リモートオブジェクトを表すオブジェクトとして定義できます。以下で構成される情報ブロックを作成します。
αリモートオブジェクトの識別子
α呼び出されるメソッドの名前
リモートJVMへのαパラメータ

スケルトン:

スケルトンオブジェクトの主な仕事は、スタブからリモートオブジェクトにリクエストを渡すことです。さらに、以下のタスクを実行します。
α元のリモートオブジェクトで目的のメソッドを呼び出します
αリモートオブジェクトに指定されたパラメータを読み取ります

Javaのマーカーインターフェイスに関するこの記事に移動します

リモートインターフェイスを実装する手順:

リモートインターフェイスを定義します。

importjava.rmi。* public interface AddAll extends Remote {public int add(int r、int s)throws RemoteException}

ここでは、リモートインターフェイスが拡張され、リモートインターフェイスのすべてのメソッドでRemoteExceptionが宣言されています。

Javaのマーカーインターフェイスに関するこの記事に移動します

リモートインターフェイスを実装します。

リモートインターフェイスに実装を提供するには、次の2つの方法があります。
αUnicastRemoteObjectクラスを拡張します
αUnicastRemoteObjectクラスのexportObject()メソッドを使用します

ファイナル最終的にJavaでファイナライズ
importjava.rmi。* importjava.rmi.server。* public class AddAllRemote extends UnicastRemoteObjectimplements Adder {AddAllRemote()throws RemoteException {super()} public int add(int r、int s){return r + s}}

rmic(rmiコンパイラ)を使用して、スタブオブジェクトとスケルトンオブジェクトを作成します。

スタブオブジェクトとスケルトンオブジェクトは、rmiコンパイラを使用して作成できます。 rmiツールは、RMIコンパイラを呼び出してオブジェクトを作成します。
rmic AddAllRemote

rmir​​egistryツールを使用して、レジストリサービスを開始します。

レジストリサービスは、rmregistryツールを使用して開始できます。ユーザーが指定しない場合は、デフォルトのポート番号が使用されます。
rmir​​egistry 5000

Javaのマーカーインターフェイスに関するこの記事に移動します

リモートアプリケーションを作成して起動します。

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

上記の例では、リモートオブジェクトはsakという名前でバインドされています。

Javaのマーカーインターフェイスに関するこの記事に移動します

クライアントアプリケーションを作成して起動します。

与えられた例では、サーバーとクライアントアプリケーションは同じマシンで実行されています。したがって、localhostの使用が行われています。

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

別のマシンからリモートオブジェクトにアクセスするには、ローカルホスト名をIPアドレスまたはリモートオブジェクトが配置されているホスト名に変更する必要があります。

コードを分類する効率的な方法は、マーカーインターフェイスを使用して実現できます。

これで、この記事は終わりです。詳細を知りたい場合は、 信頼できるオンライン学習会社であるEdurekaによる。 EdurekaのJavaJ2EEおよびSOAトレーニングおよび認定コースは、Hibernate&SpringなどのさまざまなJavaフレームワークに加えて、コアJavaコンセプトと高度なJavaコンセプトの両方についてトレーニングするように設計されています。

質問がありますか?このブログのコメントセクションでそれについて言及してください。できるだけ早くご連絡いたします。