如何克隆一堆整数?

时间:2012-12-24 07:20:28

标签: java integer stack clone

这个看似极其简单的问题困扰了我好几个小时。我正在尝试克隆一堆整数对象。我试过了

Stack<Integer> newStack = (Stack<Integer>)oldStack.clone();

然而,这给我一个错误说clone() has protected access in java.lang.Object

我最好的猜测是因为Integer没有实现clone(),所以我收到了这个错误。那么我应该如何克隆一堆整数呢?

5 个答案:

答案 0 :(得分:5)

您确定使用的是java.util.Stack吗?它从Vector

继承了克隆
  public synchronized Object clone() {...

我跑了这个测试

Stack<Integer> st = new Stack<Integer>();
st.push(1);
Stack<Integer> clone = (Stack<Integer>)st.clone();
System.out.println(clone);

它给出了

[1]

答案 1 :(得分:1)

根据Java API documentation,Stack确实实现了cloneable。你确定oldStack确实是Stack类型吗?

修改

我已使用以下代码对此进行了测试,并且没有任何异常:

    Stack<Integer> stack = new Stack<Integer>();
    stack.push(1);
    stack.push(2);
    stack.push(3);
    stack.push(4);

    Stack<Integer> s2 = (Stack<Integer>) stack.clone();

    while (!s2.empty()) {
        System.out.println(s2.pop());
    }

答案 2 :(得分:0)

你不必克隆整数,因为整数是不可变的。

您可以按new Stack().addAll(otherstack)

复印一份

答案 3 :(得分:0)

不知何故,某个地方隐藏了另一个Stack类。不知道为什么,但使用

导入Stack
import java.util.Stack

而不是依赖

import java.util.*

答案 4 :(得分:-1)

这有效:

Stack<Node> st1=(Stack<Node>) st2.clone();