如何在Scala中为类实例生成唯一ID?
发布时间:2020-12-16 18:43:15 所属栏目:安全 来源:网络整理
导读:我有一个类需要写入文件以与一些遗留的C应用程序接口. 由于它将以并发方式多次实例化, 给文件一个唯一的名称是个好主意. 我可以使用System.currentTimemili或hashcode,但是存在冲突的可能性. 另一种解决方案是将var字段放在伴随对象中. 作为一个例子,下面的
我有一个类需要写入文件以与一些遗留的C应用程序接口.
由于它将以并发方式多次实例化, 给文件一个唯一的名称是个好主意. 我可以使用System.currentTimemili或hashcode,但是存在冲突的可能性. 作为一个例子,下面的代码显示了一个具有最后一个解决方案的类,但我不确定它是最好的方法(至少看起来是线程安全的): case class Test(id:Int,data: Seq[Double]) { //several methods writing files... } object Test { var counter = 0 def new_Test(data: Seq[Double]) = { counter += 1 new Test(counter,data) } } 解决方法
由于你想要的只是一个文件,而不是id,最好的解决方案是创建一个具有唯一名称的文件,而不是具有唯一id的类. 你可以使用 val uniqFile = File.createTempFile("myFile",".txt","/home/user/my_dir") Vladimir Matveev mentioned在Java 7及更高版本中有一个更好的解决方案 – Paths.createTempFile: val uniqPath = Paths.createTempFile(Paths.get("/home/user/my_dir"),"myFile",".txt"), (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读