MPS 2023.3 Help

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


any valid identifier


one of the existing container types of the collections language

runtime type

Java classifier which represent implementation of the container


(optional) container creation expression;

the classifier's default constructor used if undefined

Last modified: 07 March 2024