gpt4 book ai didi

java - getter 返回新实例或副本

转载 作者:行者123 更新时间:2023-12-01 07:04:54 26 4
gpt4 key购买 nike

我有一个 RGB 颜色类别和一个灯泡类别。

我的问题是:在灯泡类中返回 getColor 的正确方法是什么:

第一个选项:

public RGBColor getColor()
{
return _color;
}

第二个选项:

public RGBColor getColor()
{
return new RGBColor(_color);
}

灯泡类:

private RGBColor _color;
public LightBulb (int red, int green, int blue )
{
_color = new RGBColor(red,green,blue);

}

RGB颜色类:

public class RGBColor {
private int _red;
private int _green;
private int _blue;

public RGBColor()
{
_red = 0;
_green = 0;
_blue = 0;
}

public RGBColor(RGBColor other)
{
_red = other._red;
_green = other._green;
_blue = other._blue;
}
//... getter and setters for red, green, blue
}

更新的问题:我的 friend 说第一个选项是别名,我不同意他的观点。他说得对吗?

最佳答案

这实际上取决于你想要什么。对于不同的情况,这两种选择都是合法的。

您是否希望调用 getter 的客户端能够通过引用更改对象,从而更改 LightBulb 中保存的对象?使用选项一。

您不希望调用者能够执行此操作吗?使用选项二。

您是否希望 RGBColor 对象永远无法更改,即使是在 LightBulb 内部也是如此?使 RGBColor 不可变。

关于java - getter 返回新实例或副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27916969/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com