如何在两个不同的类中设置和获取Vector <integer>?

时间:2017-07-25 16:37:23

标签: java vector getter-setter

我需要在两个不同的类中设置并获取一个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
}

4 个答案:

答案 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,如果您处于多线程环境中,请使用使用ListCollections类创建的同步@Bean public IntegrationFlow errorFlow() { return IntegrationFlows.from("errorChannel") .handle("errorService", "handleError") .get(); }

以大写字母命名您的课程。

为您的类和变量提供可读的名称。

答案 3 :(得分:0)

非常感谢所有的帮助!哇我之前从未使用过这个,我对结果非常满意。所以我解决了我的问题,我基本上只定义了我的Params一次并将其传递给每个类而不是重新创建它。