当我尝试使用下标运算符编辑 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
答案 0 :(得分:1)
看起来groovy使用ObjectRange。在文档中,您可以看到它继承了java.util.AbstractList
的add方法,该方法会抛出UnsupportedOperation异常。