scala-эквивалент публичного поля java

В 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

Родительский класс «Свойства» использует отражение для поиска всех общедоступных полей в себе и заполняет переменные значениями по мере необходимости.

Как мне расширить свойства в scala? Я предполагаю, что использование var prop1:StringProperty ... не работает из-за того, как scala преобразует частные поля, чтобы получить... установить... методы типа.


person user85116    schedule 23.06.2010    source источник


Ответы (1)


Scala помечает поле как приватное, но создает методы доступа для установки и получения его значения. Если вы хотите использовать отражение для этого, вы можете сделать это так, как описано: здесь

person Arjan Blokzijl    schedule 23.06.2010
comment
Я тоже видел эту публикацию, но, к сожалению, это не сработает... отражение происходит в родительском классе Properties, который написан на языке java, и я не могу изменить этот исходный код. - person user85116; 23.06.2010
comment
Я боюсь, что тогда вы мало что можете сделать, Scala не создает общедоступные поля в сгенерированном байт-коде, поэтому то, как класс Properties выполняет отражение, не будет работать для вашего кода Scala. - person Arjan Blokzijl; 23.06.2010