为什么WatchService使用未绑定的通配符WatchEvent <?>而不是WatchEvent <Path>

jaychang0917

我只是按照本教程使用WatchServiceAPI。我不知道为什么要使用WatchEvent<?>而不是WatchEvent<Path>,如果我使用后一种,则无需强制转换,或者还有其他WatchService可以用来监视非Path事件的情况

@SuppressWarnings("unchecked")
static <T> WatchEvent<T> cast(WatchEvent<?> event) {
    return (WatchEvent<T>)event;
}

void processEvents() {
    for (; ; ) {
        ...
        //why doesn't the poolEvents() return WatchEvent<Path> 
        for (WatchEvent<?> event: key.pollEvents()) {
            WatchEvent.Kind kind = event.kind();

            ...

            //here he use a static method cast() to SuppressWarnings the unchecked warning
            WatchEvent<Path> ev = cast(event);
        }
    }
}
elseschuller

WatchService的Javadoc说:

文件系统报告事件的速度可能快于对其进行检索或处理的速度,并且实现可能会对文件累积的事件数量施加未指定的限制。如果实现故意丢弃事件,则它安排键的pollEvents方法返回事件类型为OVERFLOW的元素。消费者可以使用此事件作为触发来重新检查对象的状态。

StandardWatchEventKinds.OVERFLOW是类型WatchEvent.Kind<Object>,我相信这就是为什么pollEvents需要返回WatchEvent<?>而不是的List的原因WatchEvent<Path>OVERFLOW的Javadoc还提到:

此事件的上下文是特定于实现的,可以为null

这就是为什么溢出事件的类型必须为的原因WatchEvent<Object>

请注意,您链接的教程建议以下内容:

通过使用kind方法检索事件的类型。无论密钥已注册了什么事件,都可能会收到OVERFLOW事件。您可以选择处理溢出或忽略它,但是您应该对其进行测试。

因此,您应该在代码中添加以下内容(如果尚未添加):

if (kind == OVERFLOW) {
    continue;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用一个if()而不是多个watchEvent()在闪亮的应用程序中显示消息

来自分类Dev

通过使用watchEvent发生内存泄漏

来自分类Dev

使用Shiny R中的watchEvent不会更新数据框

来自分类Dev

为WatchEvent证明存在的文件获取FileNotFoundException

来自分类Dev

为什么不是STUFF和FOR XML PATH不适合?

来自分类Dev

更改$ LOAD_PATH时,为什么使用unshift而不是push?

来自分类Dev

为什么使用绑定而不是函数调用?

来自分类Dev

为什么使用绑定而不是函数调用?

来自分类Dev

闪亮模块中的带有updateMaterialSwitch的watchEvent不会更新输入

来自分类Dev

根据先前的输入更新带有watchEvent的闪亮模块

来自分类Dev

观察者()中嵌套的watchEvent()经常执行

来自分类Dev

Java-使用WatchEvent抑制未经检查的强制转换警告是否安全?

来自分类Dev

PATH导出不是永久的

来自分类Dev

仅适用于Clang:pair <path,path>可以放入向量中;对<unique_ptr,unique_ptr>也可以; 但不是pair <path,unique_ptr>:为什么?

来自分类Dev

仅适用于Clang:pair <path,path>可以放入向量中;对<unique_ptr,unique_ptr>也可以;但不是pair <path,unique_ptr>:为什么?

来自分类Dev

使用服务器ip而不是字母获取Path

来自分类Dev

为什么PATH ='$ PATH:/ Path / to / bin'覆盖我的PATH?

来自分类Dev

为什么std :: experimental :: filesystem :: path不接受“ *”之类的通配符?

来自分类Dev

WatchService WatchEvent .context()方法返回ENTRY_MODIFY(goutputstream-####,Linux OS)上文件的相对路径不一致

来自分类Dev

为什么os.path引用项目路径而不是文件路径?

来自分类Dev

Ubuntu / Bash识别“导出PATH = $ PATH:〜/ ...”,而不是“导出PATH = $ PATH:/ home / ...”

来自分类Dev

为什么我得到“ nil”不是与ActiveModel兼容的对象。它必须实现:to_partial_path错误吗?

来自分类Dev

为什么我得到“ nil”不是与ActiveModel兼容的对象。它必须实现:to_partial_path错误吗?

来自分类Dev

不知道为什么Rails提交后会路由到用户/索引而不是index_home_path

来自分类Dev

为什么symlink是opt中可执行文件的首选解决方案,而不是更新PATH?

来自分类Dev

D3未捕获的TypeError:path.data不是函数

来自分类Dev

D3未捕获的TypeError:path.data不是函数

来自分类Dev

为什么__path__是列表?

来自分类Dev

是否出于技术原因在Rails URL中不使用_url而不是_path?

Related 相关文章

  1. 1

    使用一个if()而不是多个watchEvent()在闪亮的应用程序中显示消息

  2. 2

    通过使用watchEvent发生内存泄漏

  3. 3

    使用Shiny R中的watchEvent不会更新数据框

  4. 4

    为WatchEvent证明存在的文件获取FileNotFoundException

  5. 5

    为什么不是STUFF和FOR XML PATH不适合?

  6. 6

    更改$ LOAD_PATH时,为什么使用unshift而不是push?

  7. 7

    为什么使用绑定而不是函数调用?

  8. 8

    为什么使用绑定而不是函数调用?

  9. 9

    闪亮模块中的带有updateMaterialSwitch的watchEvent不会更新输入

  10. 10

    根据先前的输入更新带有watchEvent的闪亮模块

  11. 11

    观察者()中嵌套的watchEvent()经常执行

  12. 12

    Java-使用WatchEvent抑制未经检查的强制转换警告是否安全?

  13. 13

    PATH导出不是永久的

  14. 14

    仅适用于Clang:pair <path,path>可以放入向量中;对<unique_ptr,unique_ptr>也可以; 但不是pair <path,unique_ptr>:为什么?

  15. 15

    仅适用于Clang:pair <path,path>可以放入向量中;对<unique_ptr,unique_ptr>也可以;但不是pair <path,unique_ptr>:为什么?

  16. 16

    使用服务器ip而不是字母获取Path

  17. 17

    为什么PATH ='$ PATH:/ Path / to / bin'覆盖我的PATH?

  18. 18

    为什么std :: experimental :: filesystem :: path不接受“ *”之类的通配符?

  19. 19

    WatchService WatchEvent .context()方法返回ENTRY_MODIFY(goutputstream-####,Linux OS)上文件的相对路径不一致

  20. 20

    为什么os.path引用项目路径而不是文件路径?

  21. 21

    Ubuntu / Bash识别“导出PATH = $ PATH:〜/ ...”,而不是“导出PATH = $ PATH:/ home / ...”

  22. 22

    为什么我得到“ nil”不是与ActiveModel兼容的对象。它必须实现:to_partial_path错误吗?

  23. 23

    为什么我得到“ nil”不是与ActiveModel兼容的对象。它必须实现:to_partial_path错误吗?

  24. 24

    不知道为什么Rails提交后会路由到用户/索引而不是index_home_path

  25. 25

    为什么symlink是opt中可执行文件的首选解决方案,而不是更新PATH?

  26. 26

    D3未捕获的TypeError:path.data不是函数

  27. 27

    D3未捕获的TypeError:path.data不是函数

  28. 28

    为什么__path__是列表?

  29. 29

    是否出于技术原因在Rails URL中不使用_url而不是_path?

热门标签

归档