java关于新对象
我在游戏中有一个用于统计数据的基本对象。每次我为战斗地图上的40个求和单位开始战斗时,我都会复制这个对象
然后我修改每个单元的stats对象。我当然不想通过参考来传递。基本统计对象中填充了大约50个基本体。因此,我创建了一个对象的构造函数类,并乏味地复制了每个原语。这似乎是我在谷歌上找到的最安全的方法
示例代码
class Stats{
int x;
int y;
int b;
public Stats(Stats stats)
{
this.x = stats.x;
this.y = stats.y;
this.b = stats.b;
}
}
Stats currentUnit = new Stats (currentUnitBaseStats);
-问题-
这是非常令人沮丧和混乱的。值得我花时间研究实现内置克隆功能吗
如果我的stats类最终包含其他对象,那么它包含的所有对象是否也需要实现克隆功能
有没有更简单的方法
附带问题:在安卓系统上,拥有40个单独的100个基本类的内存消耗仍然很低,对吧? 谢谢,我爱你们:)
# 1 楼答案
这是实现Stats类的最佳方法。它可能看起来令人沮丧和混乱,但从功能上讲,这个类非常简单
如果STAT值没有机会,可以考虑使STATS为静态类。那么,你永远不需要复制它。例如:
要获得这些值,可以调用Stats。getX(),并且永远不必实例化Stats类。缺点是,所有引用它的对象的统计数据都是相同的
如果需要独立的stat值,应该使用当前的实现
如果所有stat对象的起始值都相同,则可以创建一个额外的构造函数来设置这些值
要回答第二个问题,假设40个对象和100个原语都是双倍的,那么它们最多需要32000字节(约32KB)。在现代硬件上,这不应该是一个问题,但是如果您可以重用数据,我鼓励您这样做