MPS
 
2019.1
 
Help

Custom Containers 

Custom Containers 

Custom containers is a simple way to provide own implementation of standard container types, thus allowing for easy extensibility of the collections language.

Example: weakHashMap

Provided the following declaration is reachable from the model currently being edited...

custom containers WeakCollections {
    public container weakHashMap<K, V> specifies map<K, V> {
    runtime type: WeakHashMap<K, V>
    factory: <no factory>                                 
  }                                                       
    public container weakHashSet<E> specifies set<E> {
    runtime type: WeakSet<E>
    factory: <no factory>                                 
  }                                                       
    }

... one can use the weak version of hashmap thusly:

map<Object, int> myMap= new weakHashMap<Object, int>;

Custom Containers Declaration

A root node of concept CustomContainers may have one or more declarations.

[public|protected|private] container containerName<TypeVar, ...> specifies container_type<TypeVar, ...> { 
  runtime type: Classifier<TypeVar, ...>
  factory: expression of type Classifier<> (optional) 
}                                                        

declaration part

allowed contents

containerName

any valid identifier

container_type

one of the existing container types of the collections language

runtime type

Java classifier which represent implementation of the container

factory

(optional) container creation expression;
the classifier's default constructor used if undefined

Last modified: 5 July 2019