Javaのラベルインターフェイス詳細説明:軽量メタデータデータメカニズム
Javaのマークインターフェイス
は、方法やフィールドを含まないインターフェイスです。特定のメタデータをクラスに追加するために使用され、Javaまたはその他のフレームワークを識別および処理できるようにします。動作を定義していないため重要ではないように見えますが、その重要性は、JVMまたは外部ライブラリがさまざまな方法でタグクラスを処理する方法をどのように伝えるかです。Javaの一般的に使用されるタグインターフェイスには、、、
が含まれます。
Serializable
1.1マークインターフェイスの例Cloneable
Remote
Javaの典型的なマークインターフェイスの例を見てみましょう:
<code class="language-java">// 标记接口示例 public interface MyMarkerInterface { // 此处未定义任何方法或字段 }</code>
1.2マーキングインターフェイスの強力な特徴
<code class="language-java">public class MyClass implements MyMarkerInterface { // 此类现在用MyMarkerInterface标记 }</code>
マーキングインターフェイスにメソッドがない場合でも、ランタイムまたはフレームワーク中にマーカーを処理する方法を知らせる上で重要な役割を果たします。
たとえば、
Serializable
同様に、フレームワークは、クラスが特定のタグインターフェイスによって登録されているかどうかを識別し、それに応じて特定の処理ロジックを適用できます。 Serializable
NotSerializableException
2。JavaのBIDインターフェイスの実用的な原則
2.1ケーススタディ:タグインターフェイス
Javaで最も一般的に使用されるタグインターフェイスの1つは
です。クラスがこのインターフェイスを実装すると、JVMに信号を送信し、そのようなオブジェクトをバイトフローにシリアル化することができることを示します。Serializable
2.2シリアル化を理解上記のコードでは、Serializable
クラスが
オブジェクトに返すことができます。 がない場合、このプロセスは失敗し、マーキングインターフェイスの隠された関数が証明されます。 Serializable
<code class="language-java">import java.io.*; class Employee implements Serializable { private String name; private int id; public Employee(String name, int id) { this.name = name; this.id = id; } @Override public String toString() { return "Employee{" + "name='" + name + '\'' + ", id=" + id + '}'; } public static void main(String[] args) throws IOException, ClassNotFoundException { Employee emp = new Employee("John Doe", 123); // 序列化 FileOutputStream fos = new FileOutputStream("employee.ser"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(emp); oos.close(); fos.close(); // 反序列化 FileInputStream fis = new FileInputStream("employee.ser"); ObjectInputStream ois = new ObjectInputStream(fis); Employee emp2 = (Employee) ois.readObject(); ois.close(); fis.close(); System.out.println(emp2); } }</code>
Javaはいくつかの構築されたインターフェイスを提供していますが、独自のアプリケーションでカスタムマークインターフェイスを作成することもできます。カスタムラベルインターフェイスを使用して、アプリケーションまたはフレームワークの一部のクラスに特別な処理信号を送信できます。
システムを構築すると仮定すると、カスタムマーカーインターフェイスを実装するクラスのみが特定の特定の処理を実行できます。タグインターフェイスを作成し、反射を使用してこれらのタグのクラスをさまざまな方法で処理できます。
<code class="language-java">// 标记接口示例 public interface MyMarkerInterface { // 此处未定义任何方法或字段 }</code>
4。タグインターフェイスとアノテーション:どちらを選択できますか?
Java 5以来、注釈はマーキングインターフェイスの一般的な代替手段になりました。では、なぜ注釈の代わりにタグインターフェイスを選択するのですか?
4.1マークインターフェイスを使用する
タグインターフェイスを使用すると、
チェックタイプを使用するか、オブジェクトをマーキングインターフェイスのタイプに強制することができます。これにより、強力なコンピレーションタイプの試験が可能になり、ツールとフレームワークがこれらのタイプをそれに応じて処理できます。
instanceof
4.2アノテーションを使用する
5。結論 マークインターフェイスは単純に見えますが、特定の動作を説明することで特定の動作を説明できるオブジェクトの分類によって多くの価値を提供します。 Javaの構築されたマーキングインターフェイス(
など)を使用している場合でも、独自のカスタムマークを作成している場合でも、これらのインターフェイスはシンプルで保守可能なソリューションを提供して、非表示のメタデータデータをクラスに追加します。
詳細記事を読む:Serializable
Java Bidインターフェイスに関する事実
以上がJavaのマーカー界面に関する事実の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。