阅读 Angelika Langer's superb Generics FAQ ,我终于开始真正了解一些更为微妙的泛型。
但是我仍然对一些行话感到害怕。我的外行人对" 最左边 "的理解和" 最右边 "与Langer在 her FAQ 中使用它的方式截然不同。
" 在该翻译类型中执行擦除,这意味着 类型参数由最左侧绑定或对象替换,如果不是 已指定绑定.. "
...
" 类型删除。 最左侧上限用于类型擦除和 替换字节代码中的type参数。在我们的Box {...}类中,所有出现的T都将被替换为 上限数。例如,如果类Box具有私有字段 类型T和方法void set(T content)用于设置此私有 字段,然后字段将在类型擦除后为Number类型 该方法将被转换为方法void set(Number content)... "
...
" 类型参数的类型擦除是最左边绑定... "
给定Box< T extends Number >
;我的理解是T
是类型参数,Number
是绑定。然后,由于Number
指向类型参数T
的 正确 ,因此为什么不会{&#t;} Number
调用&# 34; 最右边绑定&#34;?这只是一个深奥的Mathemetician说话吗?它是否像正式类型理论一样,六个意味着九个,左意味着正确吗?
有人可以告诉我为什么在右边进一步视觉印刷的东西被调用,&#34; 最左边&#34;在类型理论中?
提前致谢。
答案 0 :(得分:0)
啊!我怀疑它是因为它可能有多个绑定。 Like this?
&#34; ...类型参数边界的规范语法是:
<TypeParameter extends Class & Interface 1 & ... & Interface N >
边界列表由一个类和/或几个接口组成。
示例(具有多个边界的类型参数):
class Pair<A extends Comparable<A> & Cloneable , B extends Comparable<B> & Cloneable > implements Comparable<Pair<A,B>>, Cloneable { ... }
这是一个泛型类,有两个类型参数A和B,两者都有 有两个界限。 ...&#34;
在这种情况下,我可以看到最左边 AND 最右边的绑定方式。