我不知道如何在您选择的工具中执行此 *** 作,但是在模型级别,它的工作方式与类完全相同。您使用签名创建模板 *** 作。
UML2上层结构的第17.4.14章对此进行了说明:
模板 *** 作的模板参数和模板参数绑定是 *** 作名称和 *** 作参数之间的两个列表。
* <可见性> <名称>’<’<模板参数列表>’>’‘<<’<绑定表达式列表>’>>’‘(’<参数> [‘,’<参数>] * * ‘)’[‘:’
<属性字符串>]
就您的情况而言,我们首先来看一下
public <T> boolean bar(T x, T y)
这将对应于
+ bar
(x:T,y:T):布尔值
您的原始示例看起来更加复杂,因为模板参数被限制在另一个类Comparable中,该类又是一个模板,其参数(我将其称为T1)又绑定到 *** 作的参数。这给了我们
+ bar
可比 T >>(x:T,y:T):布尔值
注: ( 比特的深入漫步超前 )模板由UML指定(在一定程度C
++)是从泛型一个非常不同的野兽在Java中。它们看起来或多或少是相同的,但是它们的语义上存在(有时是微妙的)差异,这使得很难将两者匹配。UML中最重要的一个是:
模板不能以与相同类型的非模板元素相同的方式使用。模板元素只能用于生成绑定元素(例如,模板类不能用作类型化元素的类型)或作为另一个模板规范的一部分(例如,模板类可以专门化另一个模板类)。
这意味着在UML中,OtherFoo也需要也是一个模板-
即具有模板签名(带有0个参数)。为了在模板范围之外正确使用 *** 作模板(即在活动或类似 *** 作中调用它),您首先必须将其绑定到一个具体的 *** 作上,该 *** 作将被使用。对于您的示例,这意味着:
- 将OtherFoo模板绑定到(匿名)绑定类。
- 将栏 *** 作模板绑定到绑定类中的 *** 作。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)