Provenendo da Java Land ho cercato di insegnarmi Scala. Recentemente stavo giocando con il tipo di dati Int
e ho deciso di cercare l'API per la classe Int here.cercando di capire "l'ultima classe astratta Int privato estende AnyVal in Scala
Cosa perplesso me era la definizione di classe per Int
, che è abstract final
.
sono scuse se non ho letto sul significato di abstract
e final
in Scala prima di porre questa domanda, ma io ero curioso, così ho digitato subito questo post.
Quindi quello che sto cercando di capire è: La semantica per abstract
, final
e extends
diversa in Scala? Ancora una volta, per quanto mi risulta, in Java non è possibile avere abstract
e final
allo stesso tempo. Quindi come interpreto final abstract class Int private extends AnyVal
?
No, non lo sono, almeno in sostanza (ancora non è possibile creare un'istanza astratta, non è possibile ereditare/ignorare finale). AFAIK, il motivo per cui questo è stato fatto in questo modo è che qualche tempo fa Int e altri tipi di AnyVal erano solo degli stub, riscritti poi dal compilatore in fase di compilazione. Non lo sono dal [questo impegno] (https://github.com/scala/scala/commit/4253124eecba6bed38f1dc961c5c4ee39a29f730) –
Oh, questa è un'informazione utile. Grazie per avermelo segnalato – ilango