Beachten Sie, dass diese Antwort auf der Tatsache beruht, dass RandomAccess
ein für Lists
bedeutete Marker-Schnittstelle ist (es sagt so in der javadoc), nicht Ihre benutzerdefinierten Composite-Objekte.
Es gibt keine äquivalente Markerschnittstelle für den sequentiellen Zugriff. Es wird durch das Fehlen von RandomAccess
angedeutet.
RandomAccess
ist eine Markierungsschnittstelle, die ohne Leistung statt Iterator
sicher verwendet für die Umsetzung ein List
eine effiziente hat (das heißt O(1)
) List.get(i)
, und es kann sein Strafen gibt an, dass.
Beachten Sie, dass die Schnittstelle für Lists
gedacht ist, obwohl Sie nichts daran hindert, andere Klassen damit zu markieren (wie Sie es anscheinend tun). Es wird einfach nicht sehr nützlich sein, da diese anderen Klassen keine spezielle Behandlung haben, die List & RandomAccess
qualifizierte Klassen machen (Beispiele siehe Collections
und schauen Sie sich alle Orte an, an denen instanceof RandomAccess
verwendet wird).
Iterable kann dafür verwendet werden, obwohl es möglicherweise nicht konzeptionell 100% passt .. https://docs.oracle.com/javase/7/docs/api/java/lang/Iterable.html – Vasan