groovy单例模式

groovy单例模式,groovy,Groovy,问题1。使用groovy实现单例模式的最佳方法是什么?groovy中还有哪些支持单例机制的选项 任何有用的例子 问题2。groovy是否支持类似文件更改侦听器的功能?Q1 只需添加注释(至少从groovy v开始),就可以将任何类变为单例: 然后,您可以使用访问singleton实例 MyClass singleton = MyClass.instance 问题2 我想你是在问Groovy是否提供了一个监听器,每次文件更改时都会调用它?我不知道Groovy中有这样的功能。如果存在这样一个类,您

问题1。使用groovy实现单例模式的最佳方法是什么?groovy中还有哪些支持单例机制的选项

任何有用的例子

问题2。groovy是否支持类似文件更改侦听器的功能?

Q1 只需添加注释(至少从groovy v开始),就可以将任何类变为单例:

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

MyClass singleton = MyClass.instance
问题2
我想你是在问Groovy是否提供了一个监听器,每次文件更改时都会调用它?我不知道Groovy中有这样的功能。如果存在这样一个类,您更有可能找到一个Java实现(您可以在Groovy程序中使用它)。

关于第2个问题:Groovy本身不提供任何关于文件更改的通知方式,但是可以与Groovy一起使用的Java 7提供了

特别是,如果要监视当前目录中文件
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"
}

通常,将多个问题拆分为多个stackoverflow问题。对于延迟加载,请使用
@Singleton(lazy=true)类MyClass
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"
}