Scala final vs val para visibilidade simultânea
Em Java, ao usar um objeto em vários encadeamentos (e em geral), é uma boa prática tornar os campos finais. Por exemplo
public class ShareMe {
private final MyObject obj;
public ShareMe(MyObject obj) {
this.obj = obj;
}
}
Nesse caso, a visibilidade de obj será consistente em vários threads (vamos supor que obj também tenha todos os campos finais), pois ela é construída com segurança usando a palavra-chave fina
No scala, não parece val compilar até uma referência final, mas val é semântica no scala que impede que você reatribua uma variável ariáveis finais do Scala no construt). Se as variáveis do construtor scala não forem definidas como finais, elas sofrerão o mesmo problema (ao usar esses objetos nos atores)?