(我知道该领域的先前问题,但您会注意到原始发帖者问题的根源从未得到解决。我的问题和他们的问题一样,本质上是符号性的。)
\n在 Java 语言规范第 11 版中(但有趣的是 JLS 17 中不再出现,可能是因为它很难理解),它在第 4.10.2 节中部分写道:
\n\n\n给定泛型类型声明 C<F\xe2\x82\x81,\xe2\x80\xa6,F\xe2\x82\x99> ( n > 0),参数化类型 C<T\xe2\x82 的直接超类型\x81,\xe2\x80\xa6,T\xe2\x82\x99>,其中 T\xe1\xb5\xa2 (1 \xe2\x89\xa4 i \ xe2\x89\xa4 n ) 是一种类型,都是以下的:
\nD<U\xe2\x82\x81\xce\xb8,\xe2\x80\xa6,U\xe2\x82\x96\xce\xb8>,其中 D<U\xe2\x82\x81,\xe2\x80\ xa6,U\xe2\x82\x96> 是泛型类型,它是泛型类型 C<F\xe2\x82\x81,\xe2\x80\xa6,F\xe2\x82\x99> 的直接超类型和 \ xce\xb8 是替换 [F\xe2\x82\x81:=T\xe2\x82\x81,\xe2\x80\xa6,F\xe2\x82\x99:=T\xe2\x82\x99]。
\n
以下是我所做的假设(可能是不正确的!):
\npublic interface Collection<E> extends Iterable<E>( n = 1),而 C<T\xe2\x82\x81,\xe2\x80 \xa6,T\xe2\x82\x99> 表示public class MyStringCollection implements Collection<String>(所以 T\xe2\x82\x99 = T\xe2\x82\x81)。这里, F\xe2\x82\x81 是 in E,Collection<E>T\xe2\x82\x81 是String。\nIterable. (我还猜测作者选择 D 作为符号,因为他们正在谈论从 C 派生的类型,因此“C 之后的下一个符号”是 D。)Collection恰好采用n = 1 类型参数E),则k也为 1,因此我们将 \xce\xb8 应用于 F\xe2\x82\x81,根据定义\xce\xb8 产生 T\xe2\x82\x81,即String,因此 D<U\xe2\x82\x81> 是Iterable<String>。\nIterable<String>分配类型的引用Collection<String>?是的,可以。)我的主要问题:我关于如何读取符号结构“U\xe2\x82\x96\xce\xb8”的假设是否正确?“U\xe2\x82\x96 \xce\xb8”是否意味着“找到 F\xe2\x82\x96 并将 \xce\xb8 应用于它”? 如果是这样,我可以在哪个部分找到仅针对该假设的规范\xe2\x80\x94的理由\xe2\x80\x94?
\n我的子问题:如果我的假设是正确的,我在哪里可以找到定义“U\xe2\x82\x96\xce\xb8”等符号的元符号,其中“”似乎意味着“应用替换函数跟在前面的事情第 k次出现之后,在第k次在替换函数域的元素
\n(这样的元表示法并未在规范本身中进行描述(其他元表示法,例如 \xce\xb8 ,非常明确,这是非常值得赞赏的),并且对传统元表示法的快速搜索并没有产生这样的约定.)
\n| 归档时间: |
|
| 查看次数: |
134 次 |
| 最近记录: |