【发布时间】:2013-03-14 22:28:58
【问题描述】:
Java 中的这段代码编译没有错误:
interface T {
interface Q {
}
}
class C implements T.Q {
}
而 Scala 中的这段代码没有:
trait T {
trait Q {
}
}
class C extends T.Q {
}
Java 代码清单到 Scala 的正确翻译(如果存在)是什么?
欢迎提供有关语言设计的理论解释。
【问题讨论】:
-
除了其他人已经回答的关于路径依赖类型的问题外,还值得注意的是,Scala 对 Java 的
T.Q表示法是T#Q。 -
Oleg 提到的
T#Q语法称为type projection。请注意,如果您在从 T 派生的类型中执行此操作,则 可以 扩展 Q,例如class A extends T { class B extends Q }.
标签: java scala inner-classes