[英]Copy entire javaclass or its parameters without inheritance in Anylogic
我正在尝试 model 一家在 Anylogic 有生产订单的工厂。 不幸的是,我是 java 的初学者......
我为我的 model 创建了两个新的 JavaClass。 一份“材料清单”(stueckliste) 和“材料清单条目”(stuecklisteneintrag)。 物料清单有一个链表:
String name;
LinkedList<Stuecklisteneintrag>stuecklisteneintrag = new LinkedList<Stuecklisteneintrag>();
“物料清单条目”(stuecklisteneintrag) class 有很多参数。
如果我想创建一个
new Stueckliste();
新条目:
Stuecklisteneintrag stkE = new Stuecklisteneintrag()
基于现有条目:
stkE = stueckliste.stuecklisteneintrag.get(test);
如何将没有 inheritance 的整个“条目”复制到现有条目? 因为如果我更改参数,旧条目和新条目中的两个参数都会改变......
stkE = stueckliste.stuecklisteneintrag.get(test);
a.fertigungsstueckliste.stuecklisteneintrag.add(stkE);
a.fertigungsstueckliste.stuecklisteneintrag.getFirst().name= "Test";
traceln(a.fertigungsstueckliste.stuecklisteneintrag.getFirst().name);
traceln(stueckliste.stuecklisteneintrag.getFirst().name);
这两个名字都是“test”。 或者,如果我删除新物料清单中的条目,旧物料清单中的条目也会被删除......
您需要对数据进行“深拷贝”。 为Stuecklisteneintrag
创建一个新的构造函数:
public Stuecklisteneintrag(Stuecklisteneintrag oldEintrag) {
this.field1 = oldEintrag.field1;
... // add all fields here
}
这将创建一个新的Stuecklisteneintrag
实例,该实例取自oldEintrag
实例,但它们现在“解耦”:)
注意:您只能对primitive
数据类型(int、double、boolean)以及String
s 执行此操作。 如果您有其他 Java 类的字段,它们也需要深拷贝!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.