Предполагая, что это объявления уровня класса:
Компилятор создаст val
final
, что может привести к лучшему оптимизированию кода виртуальной машиной.
A def
не будет хранить значение в экземпляре объекта, поэтому сохранит память, но требует, чтобы метод оценивался каждый раз.
Для лучшего из обоих миров создайте объект-компаньон и объявите константы как val
s там.
то есть вместо
class Foo {
val MyConstant = 42
}
это:
class Foo {}
object Foo {
val MyConstant = 42
}