首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于jdk nio SelectionKey的几个问题

关于jdk nio SelectionKey的几个问题
EN

Stack Overflow用户
提问于 2021-12-16 08:39:48
回答 1查看 32关注 0票数 0

最近,我在阅读JDK1.8nio源代码时遇到了问题。我想知道这两种属性之间有什么区别?基于我的查询,有人说publicKeys是对密钥的代理增强,但我发现向键添加元素是可能的,但是publicKeys是不可变的,这应该如何理解。

代码语言:javascript
复制
public abstract class SelectorImpl extends AbstractSelector {
    protected HashSet<SelectionKey> keys = new HashSet();
    private Set<SelectionKey> publicKeys;

    
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-16 09:10:09

假设您是指sun.nio.ch.SelectorImpl,则publicKeys被声明为私有,并在构造函数中分配如下:publicKeys = Collections.unmodifiableSet(keys)

看看Collections#unmodifiableSet(Set),我们发现它提供了对其参数的“只读”访问。它的行为不像复制构造函数,即复制元素引用,并在调用方法时提供原始元素的静态视图。相反,它提供了原始的动态Set视图,其中所有的Set修改方法(例如addclear)都抛出一个异常。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70376054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档