Обработка закрытых полей в трейтах Scala при их реализации в Java

При реализации трейта Scala необходимо реализовать методы трейта и просто вызвать соответствующий статический метод на Foo$class.class. Однако я не уверен, как обращаться с частными полями, которые определены в свойстве.

То есть, если в трейте есть поле _something, если я не реализую _something_$eq() и _something(), компилятор на меня орет. Я предполагаю, что мне нужно создать поле _something в моем классе реализации.

Я просто хочу подтвердить, что это правильный способ решения этой проблемы.


person pondermatic    schedule 09.06.2011    source источник


Ответы (1)


Да, создайте приватное поле в классе

Обратите внимание, что вам также необходимо вызвать метод инициализации модуля Foo$class.

Если вы хотите увидеть, что именно вам нужно сделать, просто создайте класс Scala, который расширяет Foo, скомпилируйте его, а затем используйте декомпилятор (jd-gui), чтобы увидеть, как он был сгенерирован.

person IttayD    schedule 09.06.2011
comment
Спасибо. И спасибо за расширение трюка класса. Первоначально я смотрел код scala в jd-gui, но не с пользовательским классом. - person pondermatic; 09.06.2011