2011-08-23 36 views

Respuesta

23

Hay un article en scala-lang con gran diagrama (incluso lo puse en la pared). Y también hay que mencionar:

If Scala is used in the context of a Java runtime environment, then scala.AnyRef corresponds to java.lang.Object.

+3

Correcto. Tenga en cuenta que' AnyRef' no es 'Any', sino una subclase.' Any' tiene la subclase 'AnyVal' también. –

+0

@ Ernest Sí. El gráfico lo muestra muy claro. No entiendo. ¿Hay algo que eché de menos? – 4e6

+3

no, no se perdió nada, solo quería aclarar a las personas que no siguieron el enlace. –

21

incluye Object s en Java; incluye tipos primitivos y también Nothing. Object es la misma clase que en Java, por lo que definitivamente excluye primitivas.

+6

Así que si usted está tratando a un método Java que utiliza objetos, hace cualquiera que se meten en problemas si se pasa en un primitivo o está implícitamente convertido? –

+0

@JamesMcMahon Me pregunto lo mismo. – 2rs2ts

+0

@James intenté 'def met (a: java.lang.Object) = {}; val i = 10; met (i) 'y aquí está la salida del compilador: * error: el tipo de resultado de una conversión implícita debe ser más específico que AnyRef * http://stackoverflow.com/a/26550576/4541480, funcionó con' val i: java.lang.Integer = 10' (no con el valor predeterminado 'val i: Int = 10' – Nicofisi

Cuestiones relacionadas