Я использую TextStyle
и Styler
, чтобы обеспечить раскраску в окне SWT, которое я создаю.Назначение атрибута для параметра, но не по ссылке
У меня возникла проблема в моем методе Styler
applyChanges()
. Метод (абстрактный метод, встроенный в Styler
авторами SWT) принимает TextStyle
объект и применяет форматирование к нему, например, так:
public void applyStyles(TextStyle textStyle) {
textStyle.background = new Color(null, new RGB(102, 0, 58));
//yada yada
}
Однако вместо применения стилей непосредственно к нему, я бы как назначить атрибут, который уже содержит все стили. Другими словами, я пытаюсь это:
public void applyStyles(TextStyle textStyle) {
textStyle= this.textStyleAttributeStyle;
}
К сожалению, хотя это не работает, и я считаю, что это что-то делать с прохождением атрибута по ссылке, потому что, когда я скопировать атрибуты один на один, например, как
public void applyStyles(TextStyle textStyle) {
textStyle.background= this.textStyleAttributeStyle.background;
}
это отлично работает!
Итак, мой вопрос: как я могу предоставить полный клон/копию каждого атрибута в textStyleAttributeStyle
и скопировать его в соответствующий атрибут в textStyle
в кратчайшем количестве кода?
_passing атрибут, reference_ No. Java всегда по значению. Чтобы добиться эффекта _ через reference_, вам нужно передать объект, который имеет ссылку на 'textStyle', и изменить его так же, как и для« Цвет ». –
Клонирование/Копирование свойств объекта: http://stackoverflow.com/questions/2156120/java-recommended-solution-for-deep-cloning-copying-an-instance – Mubin