为什么Range会抛出UnsupportedOperationException?

时间:2014-07-22 14:23:11

标签: java list collections groovy range

当我尝试使用下标运算符编辑 groovy.lang.Range 时,我有一个错误java.lang.UnsupportedOperationException,而 java.util.List 精细。 Groovy Range API中没有迹象表明集合是不可变的。你有什么想法Range \与我的代码有什么不对吗?

代码如下:

def list = "a".."c"
assert list instanceof java.util.List
assert list.size() == 3
list[2] = "d"

控制台输出:

Exception in thread "main" java.lang.UnsupportedOperationException
    at java.util.AbstractList.set(AbstractList.java:132)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.putAt(DefaultGroovyMethods.java:6607) <6 internal calls>
    at Hello.run(Hello.groovy:4) <15 internal calls>
    at Hello.main(Hello.groovy) <5 internal calls>

更新

Groovy版本:1.8.6 JVM:1.6.0_45供应商:Sun Microsystems Inc.操作系统:Linux

1 个答案:

答案 0 :(得分:1)

看起来groovy使用ObjectRange。在文档中,您可以看到它继承了java.util.AbstractList的add方法,该方法会抛出UnsupportedOperation异常。