加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何在Scala中为类实例生成唯一ID?

发布时间:2020-12-16 18:43:15 所属栏目:安全 来源:网络整理
导读:我有一个类需要写入文件以与一些遗留的C应用程序接口. 由于它将以并发方式多次实例化, 给文件一个唯一的名称是个好主意. 我可以使用System.currentTimemili或hashcode,但是存在冲突的可能性. 另一种解决方案是将var字段放在伴随对象中. 作为一个例子,下面的
我有一个类需要写入文件以与一些遗留的C应用程序接口.
由于它将以并发方式多次实例化,
给文件一个唯一的名称是个好主意.

我可以使用System.currentTimemili或hashcode,但是存在冲突的可能性.
另一种解决方案是将var字段放在伴随对象中.

作为一个例子,下面的代码显示了一个具有最后一个解决方案的类,但我不确定它是最好的方法(至少看起来是线程安全的):

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)
  }
}

解决方法

it is a good idea to give the file an unique name

由于你想要的只是一个文件,而不是id,最好的解决方案是创建一个具有唯一名称的文件,而不是具有唯一id的类.

你可以使用File.createTempFile

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"),

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读