Java 让Path.register()注册一个ArrayList

Java 让Path.register()注册一个ArrayList,java,arraylist,Java,Arraylist,我想选择要获取的文件系统事件(条目\创建、条目\修改和/或条目\删除)。是否可以将事件保存在ArrayList中,并使用路径注册此ArrayList中的所有事件? 我的想法是: import static java.nio.file.StandardWatchEventKinds.ENTRY_CREATE; import static java.nio.file.StandardWatchEventKinds.ENTRY_MODIFY; import static java.nio.file.S

我想选择要获取的文件系统事件(条目\创建、条目\修改和/或条目\删除)。是否可以将事件保存在
ArrayList
中,并使用路径注册此ArrayList中的所有事件? 我的想法是:

import static java.nio.file.StandardWatchEventKinds.ENTRY_CREATE;
import static java.nio.file.StandardWatchEventKinds.ENTRY_MODIFY;
import static java.nio.file.StandardWatchEventKinds.ENTRY_DELETE;
...
ArrayList<WatchEvent.Kind> eventList;
...
addEvent(ENTRY_MODIFY);
addEvent(ENTRY_CREATE);
...
for (WatchEvent.Kind<?> event : eventList) {
        key = dir.register(watcher, event);
    }
...
public void addEvent(WatchEvent.Kind event) {
    eventList.add(event);

}
import static java.nio.file.StandardWatchEventTypes.ENTRY\u CREATE;
导入静态java.nio.file.StandardWatchEventTypes.ENTRY\u MODIFY;
导入静态java.nio.file.StandardWatchEventTypes.ENTRY\u DELETE;
...
ArrayList事件列表;
...
附录(条目修改);
addEvent(条目创建);
...
对于(WatchEvent.Kind事件:eventList){
key=dir.寄存器(观察者、事件);
}
...
公共无效事件(WatchEvent.Kind事件){
添加(事件);
}

这似乎只注册了最后一个,在我的示例中是文件系统的
ENTRY\u DELETE
。如何注册所有事件,以便使用
addEvent()
方法添加要注册的事件?

我自己找到的,非常简单。 只需创建一个ArrayList,添加所有要添加的事件,并从列表中生成一个数组。可以这样做:

ArrayList<WatchEvent.Kind> eventList = new ArrayList<>();
eventList.add(StandardWatchEventKinds.ENTRY_CREATE);
WatchEvent.Kind[] eventArray = eventList.toArray(new WatchEvent.Kind[eventList.size()]);
key = dir.register(watcher, eventArray);
ArrayList事件列表=新建ArrayList();
添加(StandardWatchEventTypes.ENTRY\u CREATE);
WatchEvent.Kind[]eventArray=eventList.toArray(新的WatchEvent.Kind[eventList.size());
key=dir.寄存器(watcher,eventArray);
重要的是,数组中没有元素
null