Stack<Animal> myStack = new Stack<Animal>();
Animal a = new Animal();
a.setValueOfAnimal(5);
myStack.push(a);
a.setValueOfAnimal(15);
System.out.println(myStack.pop().getValueOfAnimal());
Run Code Online (Sandbox Code Playgroud)
在上面你会看到一个示例 main 方法。
输出将是:15。
有没有办法使堆栈中的对象安全?当我修改“Animal a”的值时,我不希望堆栈中的对象被修改。
任何内置的 Java 类都支持它吗?
当我修改“Animal a”的值时,我不希望堆栈中的对象被修改。
然后你必须创建Animal.
当您在 中添加Animal引用时Stack,您只是存储引用的副本,该副本指向相同的Animal. 因此,如果您Animal使用原始引用修改您的实例,它也会针对Stack.
所以,你需要像这样修改你的代码: -
myStack.push(a);
a = new Animal(); // Make the reference `a` point to a new instance.
a.setValueOfAnimal(15);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
451 次 |
| 最近记录: |