【发布时间】:2012-05-21 19:01:52
【问题描述】:
我目前正在编写 Java 编译器并已实现第 15.12.2.7 节。 JLS7 (http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.12.2.7) ,规范中最烦人的部分之一。我仍然有一个问题,因为规范似乎没有明确说明或模棱两可。我的问题是这一行:
lcta(U) = ?如果 U 的上界是 Object,否则 ?扩展 lub(U,Object)
U 是任意类型的表达式。类型表达式的上限是多少?另外,为什么lcta总是通配符?
规范定义
CandidateInvocation(G) = lci(Inv(G)).
现在,例如,考虑 Inv(G) = { List
lci(G
CandidateInvocation(G)的结果=
lci( { List
列表
在我看来,lcta 应该在这里简单地返回 String,因为如果 List
【问题讨论】:
标签: java compiler-construction type-inference specifications