質問

ごあいを通じて以下のチュートリアル:

http://www.javaworld.com/community/node/2915

後に、明るいと感じていることはできません 書きマーカーインタフェースがどのようにすることができますコンパイラの指導、そのうタグ この組み込みます。クラスファイルをマーカーインターフェース。

修正してくださいっていただく場合が間違っている。乾杯:)

役に立ちましたか?

解決

ここにタグはヘクサ小数点コードAC編が追加されます。クラスファイルのクラスを実装するSerializableインタフェース。ということは、そのJVM扱このクラスファイルに特殊なることができるいくつかの重な資源配分の仕事がこのクラスのインスタンスが直列化されます。通常の授業に、CA FEの六角が付いています。

Aha!!理解していただきます

  • CA FE マジック番号bytecodeファイルすなわちファイルをきめます。のbytecodeファイルを任意のクラスはこのマジック番号から直列化可能な直列化可能です。

  • AC ED のマジック番号、直列化されたJavaオブジェクトファイルすなわちファイルをserializeインスタンスの直列化可能クラスです。

おは異なる二つの概念(クラスやインスタンス)と、それぞれの表現に変換するものである。

その答えは---もちろんで記入することができマーカーのス!いていかなければなりませんコンパイラにつクラスを実装するためのものですマーカーインターフェース。

ただし、 できない重複の実装はJavaオブジェクトの直列化復元純Java.オブジェクトの直列化復元用バックドア( Unsafe.allocateInstance 法)による作物体を呼び出そのコンストラクタ.AFAIK、このメソッド呼び出すことはできませんから通常のJavaコードです。(やってもできるのでな...)

他のヒント

もちろん、あなたはマーカーインターフェイスを書くことができます。マーカーインタフェースは、一般的に全くメソッドを持つだけのインタフェース(任意のクラスがそれを実装することができるように)です。

あなたは、マーカーインターフェイスは、自分で何かを、いくつかの魔法の性質を持っていることを考えているようです。それはそうではないのです。 の他のコードは、いくつかのオブジェクト上のマーカーインタフェースの存在に反応したときにクラスが実装に異なって作用することができる代わりに、いくつか。しかし、自身のインターフェイスマーカーの を何もしていません。

package com.example;
interface MarkerInterface {}

ここでは、1つを持っています。ただ、com/example/MarkerInterface.java、コンパイルにそれをコピー - ペーストし、それを使用!

ここでの使用例があります:

class SomeClass implements MarkerInterface {
    // ...
}

を作成することはできませんマーカーインタフェースは意味を持つものについては、JVMのように、 java.io.Serializable インタフェースは、.しかしすることができるマーカーインタフェースでチェックのための独自のコードを使用 instanceof.

しかしマンタフェースはこのように一般的に働いていま 注釈.マーキングクラスメソッドは、分野の様々な後加工のコンパイル時の 注釈処理ツール(apt) または実行時に使用反射どの注釈作成します。

いるのではなくマーカーインタフェースを使用ではこのように:

class MyClass implements MyMarkerInterface {
}

るべき作成のアノテーションではこのように:

@MyAnnotation
class MyClass {
}

はマーカーインターフェイスとして理解するものに依存します。しかし、一般的には、インスタンスが実装する場合はマーカーインターフェイスをチェックして、このインスタンスに何かをするためにあなたのコード内でinstanceofを使用することができます...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top