【发布时间】:2013-06-11 08:44:24
【问题描述】:
我正在使用 TextStyle 和 Styler 在我正在创建的 SWT 窗口中提供颜色。
我的Styler 方法applyChanges() 有问题。该方法(SWT 的作者在 Styler 中内置的抽象方法)采用 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 中的相应属性?
【问题讨论】:
-
通过引用传递属性 不,Java 总是按值传递。要实现 by reference 的效果,您需要传递一个引用
textStyle的对象并更改它,就像您为Color所做的那样。 -
克隆/复制对象的属性:stackoverflow.com/questions/2156120/…
标签: java parameters attributes pass-by-reference pass-by-value