0

Я использую TextStyle и Styler, чтобы обеспечить раскраску в окне SWT, которое я создаю.Назначение атрибута для параметра, но не по ссылке

У меня возникла проблема в моем методе StylerapplyChanges(). Метод (абстрактный метод, встроенный в 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 в кратчайшем количестве кода?

+1

_passing атрибут, reference_ No. Java всегда по значению. Чтобы добиться эффекта _ через reference_, вам нужно передать объект, который имеет ссылку на 'textStyle', и изменить его так же, как и для« Цвет ». –

+0

Клонирование/Копирование свойств объекта: http://stackoverflow.com/questions/2156120/java-recommended-solution-for-deep-cloning-copying-an-instance – Mubin

ответ

0

Я думаю, что Java Deep Cloning Library может быть полезным для вас,

Cloner cloner=new Cloner(); 

MyClass clone=cloner.deepClone(o); 
// clone is a deep-clone of o 
Смежные вопросы