Я хочу сохранить время, когда я создаю экземпляр объекта.Scala - сохранить время создания при создании переопределенных объектов
с помощью следующего кода, время изменяется каждый раз, когда я хочу знать CreationDate:
class MyClass()
class DatedClass(myClass: MyClass) {
val creationDate: Long = System.currentTimeMillis()
}
implicit def CachedWrapperClassifier(myClass: MyClass) = {
new DatedClass(myClass)
}
val obj = new MyClass
println(obj.creationDate)
Thread.sleep(1000)
println(obj.creationDate)
Обе указанные даты не равны ... любая идея, почему !?
Спасибо заранее!
UPDATE:
Во-первых, спасибо за ваши ответы!
Я хочу, чтобы выбрать решение Trait, но это больше не работает, если я хочу использовать метод разнесенных для получения объекта ...
trait CreationTime {
val creationTime: Long = System.currentTimeMillis()
}
class MyClass()
def getMyClass: MyClass = {
new MyClass with CreationTime
}
val obj = getMyClass
println(obj.creationTime) // creationTime is not accessible
Thread.sleep(1000)
println(obj.creationTime)
Но я не могу коснуться «MyClass».
Любая идея, как решить эту проблему?
scala - это статически типизированный язык, если вы избавитесь от типа, один из способов вернуть его - путем литья. println (obj.asInstanceOf [CreationTime] .creationTime) –