可以强制java按值返回对象吗?

可以强制java按值返回对象吗?,java,Java,在Java中,可以强制方法按值而不是按引用返回吗 例如: public Rect getBounds() { return bounds; //TODO: Return bounds by value so users can't change edit it. } 在这里,我不妨公开界限。如果要通过引用传递某个函数,那么似乎没有理由创建一个返回该函数的函数 我的另一个选择是创建几个方法,以1比1的方式返回边界的特定成员,但我宁愿不返回。否。这就是API经常返回的原因,等等 这些副本和

在Java中,可以强制方法按值而不是按引用返回吗

例如:

public Rect getBounds() {
    return bounds; //TODO: Return bounds by value so users can't change edit it.
}
在这里,我不妨公开界限。如果要通过引用传递某个函数,那么似乎没有理由创建一个返回该函数的函数


我的另一个选择是创建几个方法,以1比1的方式返回边界的特定成员,但我宁愿不返回。

否。这就是API经常返回的原因,等等

这些副本和/或包装器有助于防止用户修改实例数据

如果正确的行为依赖于实例对实例数据拥有完全且唯一的控制权,则实例负责通过不向客户端提供任何可用于破坏该契约的内容来确保该行为。

使Rect字段为最终字段,在构造函数中分配其值,而不是创建setter方法,从而使其不可变。
不可变对象有很多好处,线程安全就是其中之一。

对象不能按值返回,因为Java中没有按值赋值的概念。您可以使用相同的值创建对象的新副本并返回该副本。公开边界并完全删除getbounds是个坏主意。否,但您可能仍然需要该方法。Java bean、未来可能的优化和重构等。您可以返回bounds.cloneThis在我的例子中不起作用,因为需要对Rect对象进行主题化。我只是不想通过引用更改它。