2010-06-23 17 views
7

en Java, que tiene una clase como esta:Scala equivalente del ámbito público java

public class MyClass extends Properties { 
    public StringProperty prop1 = new StringProperty(this, "default value for prop1"); 
    public StringProperty prop2 = new StringProperty(this, "prop2 default val"); 
}//MyClass 

la clase padre "Propiedades" utiliza la reflexión para buscar todos los campos públicos en sí mismo, y llena las variables con valores como necesario.

¿Cómo ampliaría Properties in scala? Usar var prop1:StringProperty ... no funciona, supongo que debido a la forma en que scala convierte los campos privados para obtener ... establecer ... tipos de métodos.

Respuesta

6

Scala marca el campo como privado, pero genera métodos de acceso para establecer y obtener su valor. Si desea usar el reflejo para hacer esto, puede hacer esto de la manera que se describe: here

+0

Vi esa publicación también, pero desafortunadamente eso no funcionará ... el reflejo ocurre en la clase principal de Propiedades, que está escrito en lenguaje Java y no puedo cambiar ese código fuente. – user85116

+0

Me temo que no hay mucho que pueda hacer entonces, Scala no emite campos públicos en el bytecode generado, por lo que la forma en que la clase Propiedades hace la reflexión, no funcionará para su código Scala. –

Cuestiones relacionadas