Список объектно-ориентированных языков, в которых неизменяемость объектов может быть принудительно реализована компилятором

Может ли кто-нибудь дать мне список языков, где неизменяемость класса может быть принудительно проверена компилятором и легко протестирована?

Мне нужно быть может делать что-то вроде:

class immutable Person {
    private String name = "Jhon"; // lets say the String is mutable

    public Person(String name) {
        this.name = name; // ok
    }

    public void setName(String newName) { 
        this.name = newName; // does not compile
    }

    public void getName() { 
        return this.name; //returns reference through which name can't be mutated
    }

    private void testImmutability() {
        getName().setFirstChar('a'); // does not compile
    }
}

РЕДАКТИРОВАТЬ:

Дополнительные пояснения см. здесь .

6
задан Simeon 20 January 2011 в 16:32
поделиться