Q1。使用groovy实现单例模式的最佳方法是什么?在groovy中有哪些其他选项可以支持单例机制?
任何有用的例子。
Q2。 groovy支持像File changed listener这样的东西吗?
答案 0 :(得分:18)
您可以通过添加@Singleton注释(至少从groovy v 1.7.0开始)使任何类成为单例:
@Singleton
class MyClass {
}
然后,您可以使用
访问单例实例MyClass singleton = MyClass.instance
我想你在问Groovy是否提供了每次更改文件时调用的监听器?我不知道Groovy中有任何这样的工具。如果存在这样的类,则更有可能找到Java实现(可以在Groovy程序中使用)。
答案 1 :(得分: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"
}