ホームページ > Java > &#&チュートリアル > Javaのマーカー界面に関する事実

Javaのマーカー界面に関する事実

DDD
リリース: 2025-01-29 20:05:10
オリジナル
148 人が閲覧しました

Javaのラベルインターフェイス詳細説明:軽量メタデータデータメカニズム

Facts About Marker Interfaces in JavaJavaのマークインターフェイス

は、方法やフィールドを含まないインターフェイスです。特定のメタデータをクラスに追加するために使用され、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>
ログイン後にコピー

マーキングインターフェイスにメソッドがない場合でも、ランタイムまたはフレームワーク中にマーカーを処理する方法を知らせる上で重要な役割を果たします。

たとえば、

の場合、Java仮想マシン(JVM)は、このインターフェイスのクラスのオブジェクトをさまざまな方法で処理し、バイトフローにシリアル化できるようにします。 がない場合、シーケンシャル化オブジェクトを試してみると、jvmは

を投げます。

Serializable同様に、フレームワークは、クラスが特定のタグインターフェイスによって登録されているかどうかを識別し、それに応じて特定の処理ロジックを適用できます。 Serializable NotSerializableException2。JavaのBIDインターフェイスの実用的な原則

2.1ケーススタディ:Facts About Marker Interfaces in Javaタグインターフェイス

Javaで最も一般的に使用されるタグインターフェイスの1つは

です。クラスがこのインターフェイスを実装すると、JVMに信号を送信し、そのようなオブジェクトをバイトフローにシリアル化することができることを示します。

以下は、稼働方法のデモンストレーションです。

Serializable2.2シリアル化を理解

上記のコードでは、Serializableクラスが

マークインターフェイスを実装します。インスタンスをシリアル化すると、バイトフローに変換され、ファイル(Employee.ser)に保存されます。後で、

オブジェクトに返すことができます。 がない場合、このプロセスは失敗し、マーキングインターフェイスの隠された関数が証明されます。 Serializable

マーキングインターフェイスはメソッドを定義しませんが、JVMはオブジェクトを許可することでシリアル化されるようにその存在を説明します。これは、マーキングインターフェイスがマイナーな設計を通じて重要な機能を実現する方法です。
<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>
ログイン後にコピー

3。実際のアプリケーションでのカスタムラベルインターフェイス

Javaはいくつかの構築されたインターフェイスを提供していますが、独自のアプリケーションでカスタムマークインターフェイスを作成することもできます。カスタムラベルインターフェイスを使用して、アプリケーションまたはフレームワークの一部のクラスに特別な処理信号を送信できます。

3.1カスタムラベルインターフェイスの例

システムを構築すると仮定すると、カスタムマーカーインターフェイスを実装するクラスのみが特定の特定の処理を実行できます。タグインターフェイスを作成し、反射を使用してこれらのタグのクラスをさまざまな方法で処理できます。

<code class="language-java">// 标记接口示例
public interface MyMarkerInterface {
    // 此处未定义任何方法或字段
}</code>
ログイン後にコピー
ログイン後にコピー
3.2カスタムマークインターフェイスを使用する理由

特定のオブジェクトを分類するために軽量のメカニズムが必要な場合、カスタムマークインターフェイスが役立ちます。追加の方法や複雑なロジックを追加する必要はありません。クラスをマークするだけで、マークの存在は特別な治療をトリガーできます。これにより、Javaタイプシステムを使用して柔軟性を向上させながら、コードをシンプルで保守可能にします。

4。タグインターフェイスとアノテーション:どちらを選択できますか?

Facts About Marker Interfaces in Java Java 5以来、注釈はマーキングインターフェイスの一般的な代替手段になりました。では、なぜ注釈の代わりにタグインターフェイスを選択するのですか?

4.1マークインターフェイスを使用する

クラスをマークしてこのクラスに特定のタイプを使用させる場合、マーキングインターフェイスはまだ関連しています。

たとえば、

タグインターフェイスを使用すると、

チェックタイプを使用するか、オブジェクトをマーキングインターフェイスのタイプに強制することができます。これにより、強力なコンピレーションタイプの試験が可能になり、ツールとフレームワークがこれらのタイプをそれに応じて処理できます。

instanceof4.2アノテーションを使用する

一方、アノテーションはより大きな柔軟性を提供します。彼らは追加のメタデータを携帯することができ、1つのクラスのみに限定されません。

たとえば、

メソッドまたはフィールドにコメントして、多くのシナリオで注釈をより一般的にすることができます。ただし、インターフェイスをマークするなどの新しいタイプを定義する能力がありません。

5。結論 マークインターフェイスは単純に見えますが、特定の動作を説明することで特定の動作を説明できるオブジェクトの分類によって多くの価値を提供します。 Javaの構築されたマーキングインターフェイス(

など)を使用している場合でも、独自のカスタムマークを作成している場合でも、これらのインターフェイスはシンプルで保守可能なソリューションを提供して、非表示のメタデータデータをクラスに追加します。

今日の世界では、注釈はマーキングインターフェイスを大きく置き換えていますが、タグインターフェイスをいつ、どのように使用してより明確で堅牢なJavaコードを作成するかを理解することが重要です。

詳細記事を読む:SerializableJava Bidインターフェイスに関する事実

以上がJavaのマーカー界面に関する事実の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート