Ich komme aus Java Land Ich habe versucht, mich selbst zu lehren Scala. Kürzlich spielte ich mit der Int
Datentyp und ich beschloss, die API für die Int-Klasse zu suchen here.versuchen zu verstehen "finale abstrakte Klasse Int private erweitert AnyVal in Scala
Was verblüfft mich die Klassendefinition war für Int
, die abstract final
ist.
ich bin entschuldigend, wenn ich nicht auf die Bedeutung von abstract
und final
in Scala lesen, hat vor diese Frage, aber ich war neugierig, also tippte ich sofort diesen Beitrag ein
Also was ich versuche zu verstehen ist: Sind die Semantiken für abstract
, final
und extends
in Scala anders? Auch hier ist es meines Wissens am besten, dass man in Java abstract
und final
nicht gleichzeitig haben kann. Also wie interpretiere ich final abstract class Int private extends AnyVal
?
gegeben Nein, sie sind es nicht, zumindest im Prinzip (man kann immer noch nicht abstrakt instanziiert, kann man nicht erben/außer Kraft setzt final). AFAIK, der Grund dafür ist, dass Int und andere AnyVal-Typen vor einiger Zeit nur Stubs waren, die dann vom Compiler zur Kompilierzeit neu geschrieben wurden. Sie sind nicht seit [dieses commit] (https://github.com/scala/scala/commit/4253124eecba6bed38f1dc961c5c4ee39a29f730) –
Oh, das sind nützliche Informationen. Danke für das Hinweis auf mich – ilango