![]() |
1
4
你的问题和
"capture helper",
但我不确定它是否可以应用到第二个例子中,其中使用了两个独立的方法。你第一
更新:在做了一点修改,扩展了戈茨的捕获助手的概念之后,我想到了这个。里面看起来有点乱;从外面看,你不会怀疑什么。
|
![]() |
2
6
为了有用,在某个时刻你要设置
|
![]() |
3
1
为什么不分三层:
客户只知道
所以在你的例子中
|
![]() |
4
1
您正在定义Bar类。有两件事是真的… 1)钢筋中不涉及参数类型。也就是说,foo和t成员只有一个类型,比如u,它是为定义而固定的。如果您通过了要分配给foo的foo,则它必须是foo<u>。如果这都是真的,那么是的,它不是公共接口的一部分——所有东西都有一个特定的类型。那么,我不确定你所说的“量化”是什么意思,因为没有自由类型的变量。如果你的意思是“普遍量化”,你如何调和这样一个事实:条形图没有参数类型,那么它的每个成员都必须有一个具体的类型? 2)钢筋中涉及参数型。它可能不明显在公共接口中,但可能传递给foo<t>,因此您希望用多个类型实例化bar类。然后,如前所述,这是在公共接口中,您需要使用泛型在t中使bar参数化。这为定义提供了某种形式的通用量化,“对于所有类型t,这个定义是正确的”。 |
![]() |
5
0
必须在某个地方确定,您希望在bar类中使用什么类型的“t”。因此,要么您必须在BAR定义中选择它(在类定义中用foo替换foo),要么您将其留给BAR类的客户机:在这种情况下,必须将BAR设为泛型。 如果你想有一个接口来禁止不依赖T 和 为了能够为T选择不同的类型,应该使用非泛型接口或抽象基类,如:
|
![]() |
6
0
如果你真的想画一些IRE,你可以把BAR类放在foo接口中,然后用这种方式来吸取T。见 this article 有关接口内类的更多信息。也许这是一个有意义的案例?
|
![]() |
7
-2
在这种情况下,对于bar来说,参数t是无用的,因为它将在编译时被擦除为对象。所以你也可以“省去麻烦”,尽早删除:
|