2016-07-10 10 views
0

В Scala, как создать поле класса, скомпилированное в общедоступное не конечное поле (с точки зрения байт-кода).Scala: создать публичное поле не конечного класса с точки зрения байткода

Подобно этому (в Java):

public class Meh { 
    public String field; 
} 
+0

Это невозможно в Scala AFAIK. Когда вы объявляете 'var', не ограничивая его частным или частным пакетом, вы получаете getters и seters, а не прямой доступ к полям. –

ответ

1
  1. Это невозможно "очистить правильный путь.

  2. Если вы действительно хотите:

    • определить переменную как частное [это]
    • вызова через Java Reflection setAccessible (истина) для этого поля в конструкторе объекта-компаньона.
  3. Я не знаю детали за свой вопрос, но я предполагаю, то в большинстве случаев добавить некоторые Java проекта будет работать лучше;)

+1

Если имя измененного поля не имеет значения, встроенный аксессуар заставляет его: 'class C {private [this] var s: String = _; @inline private final def s(): String = this.s} 'http://stackoverflow.com/q/12486992/1296806 –