Come vengono implementati i tratti Scala in JVM?

5

Ho letto dei tratti in Scala. Sono piuttosto sorprendenti. Sono curioso di sapere come estendere una classe senza in realtà produrre un'eredità multipla. So che JVM non supporta l'ereditarietà multipla, quindi mi chiedo come funzionano queste estensioni. La lingua fornisce solo zucchero sintattico per la composizione? O il codice all'interno di un tratto è duplicato in ogni classe che lo utilizza?

    
posta Travis Parks 14.03.2013 - 20:37
fonte

2 risposte

3

Il linguaggio è "fornire zucchero sintattico per la composizione".

I metodi dei tratti diventano metodi statici su una classe helper associata al tratto. Vedi questo riferimento .

    
risposta data 15.03.2013 - 03:18
fonte
1

Per quanto mi ricordi, in realtà è una combinazione di entrambi e un sacco di trucchi di ottimizzazione. È una codifica piuttosto complicata, in realtà.

La soluzione migliore è probabilmente solo compilare alcuni semplici esempi e decompilare i file .class risultanti.

    
risposta data 14.03.2013 - 22:04
fonte

Leggi altre domande sui tag