問題タブ [marker-interfaces]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
1185 参照

java - Javaのマーカーインターフェースでjvmが行うこと

質問が言ったように、JVM は Marker インターフェイスを実装するクラスに特別な扱いをします。たとえば、以下のように Serializable を使用してテストしました。

java.io.* をインポートします。

そして、jvm が java.io.NotSerializableException として例外を与えることがわかりましたが、FILES は指定されたパスに作成されました。逆シリアル化の同様の例外です。では、JVM がシリアル化する必要があるのはなぜですか。シリアル化を直接作成できる可能性があります。

0 投票する
1 に答える
210 参照

java - ユーザー定義マーカー インターフェイスの使用法とその仕組みを教えてください。

ユーザー定義マーカー インターフェイスの使用とその仕組みは? シリアライズ可能またはクローン可能などの既に定義されているマーカー インターフェイスの場合、JVM は何らかの内部処理を行いますが、ユーザー定義のマーカー インターフェイスの場合、JVM はどのように動作しますか?

0 投票する
4 に答える
1622 参照

java - serializable のようなマーカー インターフェイスにデフォルト メソッドを含めることはできますか?

マーカーインターフェイスの原則はメソッドを持たないため、できないと思いますが、デフォルトのメソッドは抽象的ではないため、わかりません。

0 投票する
1 に答える
77 参照

c# - ラッパーを介してクラス メタデータを渡す

実行時にラッパー クラスに属性をアタッチする方法があるかどうか、またはラップされたクラスから特定のメタデータを継承する他の方法があるかどうかを確認したいと思います。

これが長すぎないことを願っていますが、これは私が持っているものです:

最初に、デバイスに送信されるコマンドを表す特定のクラスがあります。

コマンドはアプリケーションのさまざまな場所からデバイスに送信できますが、一部のコマンドは他のコマンドよりも重要であるためIPriorityCommand、このコマンドをすぐに送信する必要があることを示すマーカー インターフェイスも定義しました。

そして、私のコマンドディスパッチャーはこれをチェックします:

また、コマンドの内容を少し変更したり、他の機能を追加したりするために、コマンドをラップする必要がある場合があります。

しかし今、私の問題は、ラッパー インスタンスが優先コマンドを実装しなくなったことです。また、私はいくつかのラッパー タイプを持っているので、インターフェイスだけが異なる 2 つのバージョンの各ラッパーを用意するのは意味がありません。

インターフェイスの代わりに属性を使用することもできますが、可能な場合でも、実行時にオブジェクトの属性を設定する方法がわかりません。

もう 1 つの問題は、これらのコマンド ラッパーの一部が一般的であることです。つまり、 について何も知らないアセンブリで定義されていIPriorityCommandます。

0 投票する
1 に答える
685 参照

java - out.writeObject(object) 使用時のシリアル化エラー

マーカー インターフェイスの動作を研究していたので、以下のリンクを使用して独自のマーカー インターフェイスを作成しました。

リンク

次に、Serializable インターフェイスの機能を比較しています。

今、シリアル化可能なインターフェイスを拡張しないクラス Employee があります

次に、オブジェクトをシリアル化しようとする別のクラス SerializeDemo があります

ERRORLINE 行を削除すると、コンパイルして新しいファイルが作成されますが、オブジェクトはありません。out.writeObject(e); の方法を知りたかっただけです。エラーにつながります.ObjectOutputStreamはSerializableインターフェースを実装していますか、それともSerializableインターフェースを実装する他のクラスに拡張されていますか.

どのように out.writeObject(e); シリアライズ可能かどうかを内部的にチェック??

どんな助けでも大歓迎です!!

0 投票する
0 に答える
108 参照

java - Java コレクションにさまざまなオブジェクトを格納するためのマーカー インターフェイス

私は Java で目標のスタックを持つ Linear Planner を実装しています。そのため、述語、演算子、状態などのさまざまなオブジェクトを格納する必要があるStackを使用しています。これを実現するために、Stackable というインターフェイスを作成したので、Stack<Stackable>. すべてのスタック可能オブジェクトに共通するものは何もないため、このインターフェイスは空です。ただし、すべてをスタックする必要があります。

空のインターフェイスのアイデアが気に入らなかったので、読み始めて、Marker インターフェイスという用語に出くわしました。これは私の Stackable の場合だと思います。また、一般的に注釈に置き換えることができることもわかりましたが、使用したことがなく、問題を解決できるかどうかもわかりません。

それが私が知りたい理由です:

  1. 私の設計に代わるより良い方法はありますか (注釈を使用するか、別の方法で)?
  2. 場合によってはマーカー インターフェイスがまだ解決策である場合、いつ使用する必要があるかをどのように区別できますか?
0 投票する
1 に答える
700 参照

c# - Autofac と反変性 : より派生した型に解決する

一般的なメッセージ ハンドラーを作成しており、AutoFac を介してさまざまなメッセージ ハンドラーを取得する必要があります。メッセージ ハンドラーの基本的な定義は次のとおりです。

これらをAutoFacに簡単に登録できるように、マーカーインターフェイスも定義しました

サンプル メッセージ ハンドラは次のとおりです。

そして、これらは Autofac を使用して名前を付けて適切に登録されています

これはすべてうまくいきます。ただし、ハンドラーを解決する必要がある場合、問題があります

上記のキャストが null を返すのはなぜですか? 反変性はIMessageHandler<>インターフェースで定義されていますが。

適切なハンドラーを解決するにはどうすればよいですか?

ありがとう