我需要在两个不同的类中设置并获取一个Vector,但我似乎在这个过程中失去了Vector的大小。如果我做v.size()我得到100例如。然后我用一个二传手。然后在另一个类中,我使用getter再次访问此Vector。如果我在这个新类中执行v.size(),我得到0.下面的代码是我所拥有的一个粗略的例子,因为我不能完全复制粘贴我的代码,因为它是一部分的更大的私人项目。
public class Params {
private Vector<Integer> _v = new Vector<Integer>();
public Vector<Integer> get_v(){return _v;}
public void set_v(Vector<Integer> _v){this._v = _v;}
}
public class a {
v.add(10);
System.out.println(v.size()); //returns 1
Params p = new Params();
p.set_v(v);
}
public class b {
Params p = new Params();
v = p.get_v();
System.out.println(v.size()); //Returns 0
}
答案 0 :(得分:0)
当你在Params = new Params()
上b
时,你创建了一个类Params
的新对象,这个新对象在_v
属性上初始化一个新的空Vector。 / p>
您应该将a
上创建的对象传递给b
,以便此类可以使用它。
答案 1 :(得分:0)
您的问题是您正在重新初始化Params类。从本质上讲,你创建了两个Params对象并且都有自己的Vector,它们是完全分开的。你可以通过使你的向量static
从而使不同的实例具有相同的向量来解决这个问题。
答案 2 :(得分:0)
您创建了Params
的两个差异实例。它们中的每一个都有一个名为_v
的不同变量。
要解决此问题,您只需使用Params
的单个副本或将_v
定义为static
。
与问题没有直接关系的一些提示
请勿使用Vector
。不推荐使用Vector
。
如果您不在多线程环境中,请使用ArrayList
,如果您处于多线程环境中,请使用使用List
类Collections
类创建的同步@Bean
public IntegrationFlow errorFlow() {
return IntegrationFlows.from("errorChannel")
.handle("errorService", "handleError")
.get();
}
以大写字母命名您的课程。
为您的类和变量提供可读的名称。
答案 3 :(得分:0)
非常感谢所有的帮助!哇我之前从未使用过这个,我对结果非常满意。所以我解决了我的问题,我基本上只定义了我的Params一次并将其传递给每个类而不是重新创建它。