2016-02-17 12 views
7

Mam pytanie dotyczące „Interfejsy” w Javie i pytanie brzmi tak:Co mogę wygrać po wdrożeniu interfejsu, który jest pusty?

Jaki jest pożytek z wdrażania pusty (pusty) interfejs w mojej klasie?

W celu uzyskania lepszego zrozumienia kwestii, dam wam konkretny przykład:

Jeśli pójść i zobaczyć realizację „ArrayList” klasy, można dowiedzieć się, że wdraża dwa interfejsy (RandomAccess i Cloneable), które są w rzeczywistości całkowicie puste!

Dlaczego tak się dzieje? Co mogę wygrać, wprowadzając zupełnie pusty interfejs dla mojej klasy?

Jeśli masz jakieś pomysły, zostaw komentarz.

Z góry dziękuję.

Odpowiedz

7

te interfejsy są nazywane jako interfejsów Marker (stosowane do oznaczania klasy tego typu) oraz w czasie wykonywania są wykorzystywane do sprawdzenia typu.

ex

Podczas uruchamiania programm, logika wewnętrzna może idzie jak

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

'ObjectOutputStream' ma tego rodzaju kontrolę dla' Serializable' (interfejs znacznika) +1 – TheLostMind

+0

@SURESHATTA: Dziękuję bardzo za odpowiedź. Nigdy nie słyszałem terminu "Interfejs znacznika" i to był klucz. Byłem bardzo pomocny. – Origamer7

1

interfejsy te służą jedynie do odmiennych i identyfikowania instancji, rozważ to:

interface MyInterface1 {} 
interface MyInterface2 {} 

kod Spożywanie:

if (foo is MyInterface1) ... 
Powiązane problemy