【问题标题】:How to read a particular notation from the Java language specification如何从 Java 语言规范中读取特定符号
【发布时间】:2012-02-10 20:29:58
【问题描述】:

在阅读 Java 语言规范时,我发现了一些我无法理解的符号。比如这个

令 C 是一个类型声明(第 4.12.6 节、第 8.1 节、第 9.1 节),具有零个或多个类型参数(第 4.4 节)F1、...、Fn,它们具有相应的边界 B1、...、Bn。该类型声明定义了一组参数化类型(第 4.5 节) C2 ,其中每个参数类型 Ti 的范围涵盖所有类型,这些类型是相应边界中列出的所有类型的子类型。也就是说,对于 Bi 中的每个绑定类型 Si,Ti 是 Si[ F1 := T1, ..., Fn := Tn] 的一个子类型。

什么是 Si[ F1 := T1, ..., Fn := Tn]?怎么读?有人知道吗?谢谢...

【问题讨论】:

  • 当你问他/她这个问题时,你的教授告诉了你什么?
  • 您在该段落中给出了正确的所有定义。回头看看 T 和 F 是什么意思。

标签: java notation


【解决方案1】:

相同的规范描述了第 2 章中的符号。

【讨论】:

    【解决方案2】:

    查看此错误thread。尤其是这句话准确地解释了您的要求:

    因此,给定一个泛型类型声明 C,当且仅 如果 T1 <: b1 t2 b2 ... tn bn.>

    希望它能让你更好地理解。

    基本上,符号本身告诉您每个参数类型 Fi 实际上都分配给子类型 Ti。

    【讨论】:

    • 我的猜测是 [x,x,x] 是某个范围。但是什么是 F1 := T1?某种关系?
    • 表示赋值。这种特殊字符用于区分相等检查。见这里en.wikipedia.org/wiki/Assignment_(computer_science)
    • 我想我找到了。 “在本节中,设 A1 , ... , An 是 C 的形式类型参数,设 Bi 是 Ai 的声明边界。符号 [Ai := Ti] 表示将类型变量 Ai 替换为类型Ti,代表 1 英寸,在本规范中使用。”
    • 我以为你在问“意义”。如果你的主要问题是关于“符号” - 你是对的。 “[]”表示“一组值范围”,“X := Y”表示用子类型“X”替换超类型变量 Y。它有点像(但不完全相同)这个 ASN.1 符号:obj-sys.com/asn1tutorial/node18.html
    • @zim32 - 请也看看下面我的 cmets。
    【解决方案3】:

    这是当前的 Java 规范:

    http://download.oracle.com/otn-pub/jcp/jls-7-mr3-fullv-oth-JSpec/JLS-JavaSE7-Full.pdf

    我找不到你上面引用的参考资料。

    由于不知道您引用的段落在说什么,我们无法更好地解释这个符号。

    我最好的猜测是:

    • 每个 Java“方法”都有一个“签名”列出该函数的参数

    • 每个参数都有一个“类型”(例如“T1”),它是合法值的“有界范围”(例如“B1..BN”)。

    我建议您阅读第 4 章:“类型、值和变量”。

    【讨论】:

    • 我问的是 Si[ F1 := T1, ..., Fn := Tn] 这个文本。我不知道如何用人类语言阅读这个字符串
    • 感谢您的参考 - 它有帮助:)
    • 1) 您正在阅读旧版本的规范。您会注意到当前版本不再具有此特定部分(我猜这太混乱了;))。 2)标题是“类和接口类型之间的子类型化” 3)它的意思是“每个类和接口都有一个类型,每个类型都有边界”。仅此而已,仅此而已:)'希望对您有所帮助.. PSM
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    • 1970-01-01
    • 1970-01-01
    • 2019-10-10
    • 2014-02-24
    相关资源
    最近更新 更多