in Java mit inneren Schnittstellen tun kompiliert ohne Fehler:Implementierung inneren Züge in Scala wie wir Dieser Code in Java
interface T {
interface Q {
}
}
class C implements T.Q {
}
während dieser Code in Scala nicht:
trait T {
trait Q {
}
}
class C extends T.Q {
}
Was die richtige ist Übersetzung (falls vorhanden) des Java-Codes in Scala?
Theoretische Erklärungen zum Sprachdesign sind willkommen.
Zusätzlich zu dem, was andere bereits über pfadabhängigen Arten beantwortet, ist es auch erwähnenswert, dass Scala Notation für Java 'T.Q' ist' T # Q'. –
Die 'T # Q'-Syntax, auf die sich Oleg bezieht, wird als [type projection] bezeichnet (http://stackoverflow.com/questions/6676048/why-does-one-select-scala-type-members-with-a-hash) - anstelle eines Punktes). Und beachte, dass du * Q * erweitern kannst, wenn du es innerhalb eines von T abgeleiteten Typs machst, z. 'Klasse A erweitert T {Klasse B erweitert Q}'. – AmigoNico