2016-02-17 4 views
7

私はJavaで「インターフェース」についての質問があり、問題は、このように聞こえる:空白のインターフェースを実装すると、私は何を得ますか?

私のクラスでは、ブランク(空の)インターフェイスを実装の使用は何ですか?質問のより良い理解を得るために

は、私はあなたの具体的な例与える:あなたは「ArrayListの」クラスの実装を行って、表示された場合

を、あなたはそれが実装されていることがわかります2つのインタフェース(RandomAccessとCloneable)は、実際には完全に空です!

どうしてですか? 私のクラスのために完全に空白のインターフェイスを実装することで、私は勝つべきですか?

あなたにアイデアがある場合は、コメントを残してください。

ありがとうございます。

答えて

7

これらのインターフェースは、マーカーインターフェイス(そのタイプのクラスをマークするために使用、実行時に、彼らはタイプを確認するために使用されるように呼ばれています。 EX

について

のprogrammを実行している間、内部ロジックは、これらのインターフェイスは、インスタンスが異なると識別するためにのみ役立つ

if (yourList instanceof Cloneable) { 
     // Hey this object is of type Clonable, please proceed 
    } else { 
     // Not that type. Reject 
    } 
+2

'ObjectOutputStream'はこのような' Serializable'(マーカーインターフェース)のチェックを持っています。+1 – TheLostMind

+0

@SURESHATTA:あなたの答えはありがとうございます。私は "Marker Interface"という言葉を聞いたことがなく、それが実際に鍵でした。私は大きな助けとなりました。 – Origamer7

1

ようになり、これを検討してもよい:コードを消費

interface MyInterface1 {} 
interface MyInterface2 {} 

ました:

if (foo is MyInterface1) ...