Proposal: Indexing access syntax for Lists and Maps (original) (raw)

Mark Thornton mthornton at optrak.co.uk
Mon Mar 30 06:51:06 PDT 2009


Shams Mahmood wrote:

Hi Joe,

Haven't used too many annotations in Java code. I had fiddled with the idea of Indexable (yes even I had come up with the same name - our vocabularies are so limited ;) ), but I decided otherwise for the following reasons: 1) Java traditionally has wanted to avoid operator overloading (Indexable means compiler providing operator support for Indexable marked classes). Although for each loops have special handling cases for Iterable types. 2) get/set implementation of Lists and Maps will need to change. In fact Map doesn't even have a set, so a new method will be added to the interface breaking backwards compatibility. Shams. The advantage of using an annotation is that the List/Map interfaces DON'T need to change other than the addition of the annotation to specify the methods to be used for indexed get and set. So Map becomes something like:

interface Map<K,V> { @indexedGet V get(Object key); @indexedSet V put(K key, V value); // rest unchanged }

interface List { @indexedGet E get(int index); @indexedSet E set(int index, e element); }

Implementations of these interfaces don't need to change at all. A marker interface could be used as well, but doesn't seem to me to be strictly necessary (I'll post some more suggestions on this later).

Regards, Mark Thornton



More information about the coin-dev mailing list