使用 Java 将对象添加到 Vector 会丢失引用吗?

eri*_*cso 2 java vector stringbuffer

我有一个包含许多对象的向量。我的代码使用循环根据特定条件将对象添加到 Vector。我的问题是,当我将对象添加到 Vector 时,原始对象引用是否添加到向量中,或者 Vector 是否创建该对象的新实例并添加它?

例如,在以下代码中:

private Vector numbersToCalculate;
StringBuffer temp = new StringBuffer();

while(currentBuffer.length() > i) {
    //Some other code
    numbersToCalculate.add(temp);
    temp.setLength(0); //resets the temp StringBuffer
}
Run Code Online (Sandbox Code Playgroud)

我正在做的是将“temp”StringBuffer 添加到numbersToCalculate Vector 中。我应该在循环中创建一个新的 StringBuffer 并添加它,还是这段代码可以工作?谢谢您的帮助!

埃里克

Dav*_*ton 5

每次都需要创建一个新的 StringBuffer。Vector 中的每个项目项只是指向同一个 StringBuffer 对象的指针,因此每次循环时,您都会重置 stringbuffer 的单个实例并向 Vector 添加相同的引用。

只需替换temp.setLength(0);temp = new StringBuffer();