时髦的单身人士模式

ani*_*ish 7 groovy

Q1.使用groovy实现单例模式的最佳方法是什么?在groovy中可用于支持单例机制的其他选项有哪些?

任何有用的例子.

Q2.groovy是否支持File更改的监听器?

Dón*_*nal 18

Q1

你可以简单地通过添加@Singleton注释使任何类成为单例(至少从groovy v 1.7.0开始):

@Singleton
class MyClass {

}
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用访问单例实例

MyClass singleton = MyClass.instance
Run Code Online (Sandbox Code Playgroud)

Q2

我想你问Groovy是否提供了一个每次更改文件时调用的监听器?我不知道Groovy中有任何这样的工具.如果存在这样的类,则更有可能找到Java实现(可以在Groovy程序中使用).


ata*_*lor 7

关于Q2:虽然groovy本身没有提供任何方式来通知文件更改,但Java 7可以与groovy一起使用.

特别是,如果要foo在当前目录中查看文件的文件更改,可以执行以下操作:

import java.nio.file.*
FileSystems.default.getPath(".")  // dot for current directory
def watchKey = p.register(FileSystems.default.newWatchService(),
    StandardWatchEventKinds.ENTRY_MODIFY)
def events = watchKey.pollEvents()
events.findAll{it.context().fileName == 'foo'}.each { event ->
    println "foo was changed"
}
Run Code Online (Sandbox Code Playgroud)