当我们想在Groovy中创建无法修改的集合时,我们可以使用asImmutable。 从Groovy 2.5.0开始,我们也可以在集合中使用asUnmodifiable
方法。 该方法可以应用于所有Collection
类型,包括Map
。
在下面的例子中,我们在List
和Map
上使用asUnmodifiable
:
import static groovy.test.GroovyAssert.shouldFail
// Create List that is unmodifiable.
def list = ['Groovy', 'Gradle', 'Asciidoctor', 'Micronaut'].asUnmodifiable()
shouldFail(UnsupportedOperationException) {
// We cannot add new items.
list << 'Java'
}
shouldFail(UnsupportedOperationException) {
// We cannot change items.
list[0] = 'Java'
}
// Create Map that is unmodifiable.
def data = [name: 'Messages from mrhaki', subject: 'Gr8 stuff'].asUnmodifiable()
shouldFail(UnsupportedOperationException) {
// We cannot add a new key.
data.subject = 'Dev subjects'
}
shouldFail(UnsupportedOperationException) {
// We cannot change the value of a key.
data.blog = true
}
用Groovy 2.5.0编写。