2012-05-01 8 views
6

Estoy intentando portar algún código java a scala. El código utiliza anotaciones con un miembro llamado type, pero esta es una palabra clave en scala. ¿Hay alguna forma de dirigirse a este miembro válido de Java en Scala?¿No se puede establecer un miembro de anotación java llamado tipo en scala?

Aquí está el código de Java

@Component(
     name = "RestProcessorImpl", 
     type = mediation // Compile error 
     ) 
public class RestProcessorImpl { 
// impl 
} 

Esta parte del código es idéntico en Scala excepto que type es una palabra clave por lo que no se compila. ¿Hay alguna forma de escapar de la palabra clave type?

Este es también un problema con las clases de Java con un miembro de type

HasType.java

package spike1; 

public class HasType { 
    public String type() { 
     return "the type"; 
    } 
} 

UseType.scala

class UseType { 
    def hasType = new HasType 
    hasType.type() // Compile error 
} 

Respuesta

15

Usted puede utilizar acentos abiertos para conseguir alrededor de identificadores ilegales:

val type = 1 // error 
val `type` = 1 // fine 

Así, con su código, usted puede hacer esto:

val hasType = new HasType 
hasType.`type`() // no error 
+0

Excelente, sé que debe haber sido una manera, que es justo lo que estaba buscando. – iain

Cuestiones relacionadas