gpt4 book ai didi

java - Java 中不可修改的 vector

转载 作者:搜寻专家 更新时间:2023-11-01 01:35:57 25 4
gpt4 key购买 nike

我需要在我的程序中管理数据,其中 Java-Vector 适合此目的,因为它是同步的,通过索引提供动态大小和快速随机访问。

但我想将我的 Vector 设为只读,供其他程序类使用,而我自己的类可以读写。

我阅读了关于 Collections.unmodifiableList() 的内容,但是如果我让我的 Vector 不可修改,它也会对我的类(class)变成只读的。

我该如何解决这个问题?

最佳答案

I read about Collections.unmodifiableList(), but if I make my Vector unmodifiable, it will become read-only to my class as well.

我认为您误解了该方法的作用。实际上,它为现有列表创建了一个不可修改的包装器,而使原始列表可修改。

所以处理您的要求的方法是做这样的事情1:

private Vector<?> myVector = new Vector<?>();
private List<?> readOnly = Collections.Collections.unmodifiableList((myVector);

public List<?> getList() { return readOnly; }

任何有权访问 myVector 的对象仍然可以在其中添加和删除元素。更改将通过 readonly 对象可见...但是对该对象的“更改”操作将不起作用。

(另一种方法是创建原始 Vector 对象的副本,但我很确定这不符合您的要求。)


1 - 请注意,readOnly 对象是一个 List 而不是 Vector。这应该不是问题,除非您错误地将 getter 声明为返回 Vector。如果你已经这样做了,但你无法纠正错误,那么你将需要根据 Evgeniy Dorofeev 的回答创建你自己的 Vector 子类。否则 Collections.unmodifiableList(...) 就可以了。

关于java - Java 中不可修改的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13945911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com