Я не знаю, как это сделать в вашем инструменте по выбору, но на уровне модели он работает точно так же, как и для классов. Вы создаете операцию с вашей подписью.
Глава 17.4.14 в UML2 superstructure определяет это для обозначения:
Параметры шаблона и шаблона параметров связывания операции шаблона являются два списка в между именем операции и параметры работы ,
* < видимости> < имени> '<' < шаблона-список параметров> '>' '< <' < связывание-список_выражений> '>>' '(' < параметр> [ '' < параметра >] ** ')' [ ':' < строка свойств>]
В вашем случае, давайте сначала посмотрим, простой случай
public <T> boolean bar(T x, T y)
Это будет соответствовать
+ бар < T> (х: Т, у: Т): Boolean
Ваш оригинальный пример выглядит немного сложнее, так как параметр шаблона ограничен к другому class, Comparable, который, в свою очередь, также является шаблоном, параметр которого (я буду называть его T1) привязан к параметру операции по очереди. Это дает нам
+ бар < T> Сопоставимые < T1-> T >> (х: Т, у: Т): Boolean
Примечание: (Немного углубленного продвижения вперед) Шаблоны, указанные UML (и в некоторой степени C++), являются совсем другим зверем от Generics в Java. Они выглядят более или менее одинаково, но есть и иногда тонкие различия в их семантике, которые могут затруднить соответствие двух.Наиболее важным в UML является следующее:
Шаблон нельзя использовать таким же образом, как и элемент без шаблона того же типа. Элемент шаблона может использоваться только для создания связанных элементов (например, класс шаблона не может использоваться как тип типизированного элемента) или как часть спецификации другого шаблона (например, класс шаблона может специализировать другой класс шаблона).
Это означает, что в UML также должен быть шаблон OtherFoo - т. Е. Иметь подпись шаблона (с 0 параметрами). Чтобы затем правильно использовать шаблон операции вне области шаблона - то есть вызвать его в виде действия или аналогичного - сначала вам нужно привязать его к конкретной операции, которая используется вместо этого. В случае вашего примера это означает:
- Привязка шаблона OtherFoo к (анонимному) классу.
- Шаблон операции привязки к операции в связанном классе.
+1, Хороший вопрос !!!!! – NINCOMPOOP